Li 2 éve
szülő
commit
ff1f63f076
1 módosított fájl, 152 hozzáadás és 202 törlés
  1. 152 202
      TEAMModelBI/Controllers/BITest/TestController.cs

+ 152 - 202
TEAMModelBI/Controllers/BITest/TestController.cs

@@ -219,7 +219,7 @@ namespace TEAMModelBI.Controllers.BITest
         }
 
         /// <summary>
-        /// 查询table数据
+        /// 查询table数据 sql
         /// </summary>
         /// <param name="jsonElement"></param>
         /// <returns></returns>
@@ -1103,72 +1103,6 @@ namespace TEAMModelBI.Controllers.BITest
             return Ok(new { state = 200, continuationToken, count = schools.Count, schools });
         }
 
-        /// <summary>
-        /// 测试
-        /// </summary>
-        /// <param name="jsonElement"></param>
-        /// <returns></returns>
-        [HttpPost("get-test")]
-        public async Task<IActionResult> GetTest(JsonElement jsonElement)
-        {
-            List<Test> list1 = new();
-            list1.Add(new Test { score = 10, name = "001" });
-            list1.Add(new Test { score = 20, name = "002" });
-            list1.Add(new Test { score = 30, name = "003" });
-            list1.Add(new Test { score = 40, name = "004" });
-            list1.Add(new Test { score = 50, name = "005" });
-            list1.Add(new Test { score = 60, name = "006" });
-
-            List<Test> list2 = new();
-            list2.Add(new Test { score = 40, name = "004" });
-            list2.Add(new Test { score = 50, name = "005" });
-            list2.Add(new Test { score = 60, name = "006" });
-            list2.Add(new Test { score = 70, name = "007" });
-            list2.Add(new Test { score = 80, name = "008" });
-            list2.Add(new Test { score = 90, name = "009" });
-            list2.Add(new Test { score = 100, name = "010" });
-
-            //list3 return 2
-            List<Test> list3 = list1.Where(x => !list2.Any(x2 => x.score == x2.score && x.name == x2.name)).ToList();
-            //list4 return 2
-            List<Test> list4 = list1.Where(x => list2.All(x2 => x.score != x2.score)).ToList();
-
-            List<Test> temp = list1.Where(p => !list2.Select(b => b.score).Contains(p.score)).ToList();
-
-            //List<Test> mergedList = new List<Test>(list1);
-            //mergedList.AddRange(list2.Except(list1));
-            // var mergedList = list1.Union(list2);
-
-            var en2 = list1.Concat(list2).Except(list1.Intersect(list2));// 容斥原理
-
-            var bingji = list1.Union(list2).ToList();//并(全)集
-
-            var cha = bingji.GroupBy(x => x.score).Select(c => c.First()).ToList();
-
-            var jiaoji = list1.Intersect(list2).ToList();//交集
-            var chaji = list1.Except(list2).ToList();//差集
-
-            List<Test> have = list1.Where(a => !list2.Exists(t => a.score == t.score)).ToList();
-            have.AddRange(list2.Where(a => !list1.Exists(t => a.score == t.score)).ToList());
-
-            var ss = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 7).ToString("yyyy-MM-dd");//上周日
-            var sss = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 7).ToString("yyyy-MM-dd");//上周六
-
-            var ssss = DateTime.Now.AddDays(1 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 7 + 1).ToString("yyyy-MM-dd");//上周一
-            var sssss = DateTime.Now.AddDays(7 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 7 + 1).ToString("yyyy-MM-dd");//上周日
-
-            //计算上周
-            var date = DateTime.Now;
-            var m = (date.DayOfWeek == DayOfWeek.Sunday ? (DayOfWeek)7 : date.DayOfWeek) - DayOfWeek.Monday;
-            var s = (date.DayOfWeek == DayOfWeek.Sunday ? (DayOfWeek)7 : date.DayOfWeek) - (DayOfWeek)7;
-            var Mon = date.AddDays((-7 - m)).ToString("yyyy-MM-dd");
-            var Sun = date.AddDays((-7 - s)).ToString("yyyy-MM-dd");
-
-            var (lastWeekStart, lastWeekEnd) = TimeHelper.GetStartOrEnd(DateTimeOffset.UtcNow, "lastweek");
-
-            return Ok(new { state = 200, Mon, Sun, ss, sss, ssss, sssss, lastWeekStart, lastWeekEnd, have, en2, bingji, cha, jiaoji, chaji, list3, list4, temp, list1 });
-        }
-
         /// <summary>
         /// table 表分页查询
         /// </summary>
@@ -1190,6 +1124,19 @@ namespace TEAMModelBI.Controllers.BITest
             operateLogs.Sort((x, y) => y.time.CompareTo(x.time));
             List<BIOptLog> bIOptLogs = operateLogs.Skip((page - 1) * size).Take(size).ToList();
 
+            int takeCount = 500;
+            var table1 = _azureStorage.GetCloudTableClient();
+            int pagesize = 10;
+            int pageNum = 2;
+
+            var query = (from entity in table.CreateQuery<BIOptLog>()
+                         select entity).ToList().Skip(pagesize * (pageNum - 1)).Take(pagesize);
+
+            //var query = (from entity in table.CreateQuery<BIOptLog>()
+            //             orderby entity.time descending
+            //             select  entity).Skip(pagesize * (pageNum - 1)).Take(pagesize);
+            //var ster = AzureStorageTableExtensions.GetTablePage<BIOptLog>(table1, "BIOptLog", 10, 1);
+
             return Ok(new { state = 200, allcount = operateLogs.Count, bIOptLogs });
         }
 
@@ -1228,9 +1175,69 @@ namespace TEAMModelBI.Controllers.BITest
             return Ok(new { state = 200 });
         }
 
+        /// <summary>
+        /// lingq 查询
+        /// </summary>
+        /// <returns></returns>
         [HttpPost("get-linqcount")]
         public async Task<IActionResult> GetLinqCount()
         {
+            List<Test> list1 = new();
+            list1.Add(new Test { score = 10, name = "001" });
+            list1.Add(new Test { score = 20, name = "002" });
+            list1.Add(new Test { score = 30, name = "003" });
+            list1.Add(new Test { score = 40, name = "004" });
+            list1.Add(new Test { score = 50, name = "005" });
+            list1.Add(new Test { score = 60, name = "006" });
+
+            List<Test> list2 = new();
+            list2.Add(new Test { score = 40, name = "004" });
+            list2.Add(new Test { score = 50, name = "005" });
+            list2.Add(new Test { score = 60, name = "006" });
+            list2.Add(new Test { score = 70, name = "007" });
+            list2.Add(new Test { score = 80, name = "008" });
+            list2.Add(new Test { score = 90, name = "009" });
+            list2.Add(new Test { score = 100, name = "010" });
+
+            //list3 return 2
+            List<Test> list3 = list1.Where(x => !list2.Any(x2 => x.score == x2.score && x.name == x2.name)).ToList();
+            //list4 return 2
+            List<Test> list4 = list1.Where(x => list2.All(x2 => x.score != x2.score)).ToList();
+
+            List<Test> temp = list1.Where(p => !list2.Select(b => b.score).Contains(p.score)).ToList();
+
+            //List<Test> mergedList = new List<Test>(list1);
+            //mergedList.AddRange(list2.Except(list1));
+            // var mergedList = list1.Union(list2);
+
+            var en2 = list1.Concat(list2).Except(list1.Intersect(list2));// 容斥原理
+
+            var bingji = list1.Union(list2).ToList();//并(全)集
+
+            var cha = bingji.GroupBy(x => x.score).Select(c => c.First()).ToList();
+
+            var jiaoji = list1.Intersect(list2).ToList();//交集
+            var chaji = list1.Except(list2).ToList();//差集
+
+            List<Test> have = list1.Where(a => !list2.Exists(t => a.score == t.score)).ToList();
+            have.AddRange(list2.Where(a => !list1.Exists(t => a.score == t.score)).ToList());
+
+            var ss = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 7).ToString("yyyy-MM-dd");//上周日
+            var sss = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 7).ToString("yyyy-MM-dd");//上周六
+
+            var ssss = DateTime.Now.AddDays(1 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 7 + 1).ToString("yyyy-MM-dd");//上周一
+            var sssss = DateTime.Now.AddDays(7 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 7 + 1).ToString("yyyy-MM-dd");//上周日
+
+            //计算上周
+            var date = DateTime.Now;
+            var m = (date.DayOfWeek == DayOfWeek.Sunday ? (DayOfWeek)7 : date.DayOfWeek) - DayOfWeek.Monday;
+            var s = (date.DayOfWeek == DayOfWeek.Sunday ? (DayOfWeek)7 : date.DayOfWeek) - (DayOfWeek)7;
+            var Mon = date.AddDays((-7 - m)).ToString("yyyy-MM-dd");
+            var Sun = date.AddDays((-7 - s)).ToString("yyyy-MM-dd");
+
+            var (lastWeekStart, lastWeekEnd) = TimeHelper.GetStartOrEnd(DateTimeOffset.UtcNow, "lastweek");
+
+
             List<linqTest> linqTests = new();
             for (int i = 0; i < 10; i++)
             {
@@ -1244,7 +1251,7 @@ namespace TEAMModelBI.Controllers.BITest
             //    var coreUser = linqTests.Find(c => c.id.Equals("abc0"));
             //   });  //.Except(linqTests.Select(y => y.linq1s.Find(n => n.times.Equals("abc0"))));
 
-            return Ok(new { state = 200, linqTests, set });
+            return Ok(new { state = 200, Mon, Sun, ss, sss, ssss, sssss, lastWeekStart, lastWeekEnd, have, en2, bingji, cha, jiaoji, chaji, list3, list4, temp, list1, linqTests, set });
         }
 
         /// <summary>
@@ -1350,7 +1357,7 @@ namespace TEAMModelBI.Controllers.BITest
         }
 
         /// <summary>
-        /// 
+        /// 测试删除过期Blob 文件
         /// </summary>
         /// <param name="jsonElement"></param>
         /// <returns></returns>
@@ -1465,32 +1472,11 @@ namespace TEAMModelBI.Controllers.BITest
 
             return Ok(new { state = 200 });
         }
-
+        
         /// <summary>
-        /// 测试研究table 表分页的问题
+        /// 端外通知
         /// </summary>
-        /// <param name="jsonElement"></param>
         /// <returns></returns>
-        [HttpPost("get-logrec")]
-        public async Task<IActionResult> GetLogRec(JsonElement jsonElement)
-        {
-            int takeCount = 500;
-            var table = _azureStorage.GetCloudTableClient().GetTableReference("BIOptLog");
-            var table1 = _azureStorage.GetCloudTableClient();
-            int pagesize = 10;
-            int pageNum = 2;
-
-            var query = (from entity in table.CreateQuery<BIOptLog>()
-                         select entity).ToList().Skip(pagesize * (pageNum - 1)).Take(pagesize);
-
-            //var query = (from entity in table.CreateQuery<BIOptLog>()
-            //             orderby entity.time descending
-            //             select  entity).Skip(pagesize * (pageNum - 1)).Take(pagesize);
-            //var ster = AzureStorageTableExtensions.GetTablePage<BIOptLog>(table1, "BIOptLog", 10, 1);
-            return Ok(new { state = 200, query });
-
-        }
-
         [HttpPost("get-noticev2")]
         public async Task<IActionResult> SetNoticeV2()
         {
@@ -1503,11 +1489,30 @@ namespace TEAMModelBI.Controllers.BITest
             return Ok(new { state = RespondCode.Ok });
         }
 
+        /// <summary>
+        /// 复制文件
+        /// </summary>
+        /// <returns></returns>
         [HttpPost("set-copyfile")]
         public async Task<IActionResult> SetCopyFile()
         {
 
-            List<Task<CopyFromUriOperation>> filelist = new List<Task<CopyFromUriOperation>>();
+            ///单个复制文件
+            string blobName = "cswznb";
+            string oldFile = "https://teammodeltest.blob.core.chinacloudapi.cn/cswznb/survey%2Fd011c05b-c009-0a53-428f-b871a58092c7%2Findex.json";//"https://teammodeltest.blob.core.chinacloudapi.cn/1636016499/yxpt%2Fstandard2%2FTEAMModelOS%E6%95%B0%E6%8D%AE%E5%BA%93.doc";
+            string oldId = "survey";
+            string newId = "survey1";
+
+            List<Task<CopyFromUriOperation>> filelist = new();   //可复制256M以上文件
+            var set = await BatchCopyFileService.SingleCopyFile(_azureStorage, blobName, oldFile, oldId, newId);
+
+            //var azureClient = _azureStorage.GetBlobContainerClient($"{blobName}");//获取容器连接地址
+            //string newurl = oldFile.Substring(oldFile.IndexOf($"{blobName}/") + $"{blobName}/".Length).Replace($"{oldId}", $"{newId}");//替换成新的容器路径
+            //string oldFileName = oldFile.Substring(oldFile.IndexOf($"{blobName}/") + $"{blobName}/".Length);
+            //var urlSas = _azureStorage.GetBlobSAS($"{blobName}", $"{HttpUtility.UrlDecode(oldFileName)}", BlobSasPermissions.Read | BlobSasPermissions.List);   //获取容器sas和有效期
+            ////var respCopy =  azureClient.GetBlobClient(HttpUtility.UrlDecode(newurl)).SyncCopyFromUri(new Uri(urlSas));    //可复制256M以下文件
+            //var respCopy1 = await azureClient.GetBlobClient(HttpUtility.UrlDecode(newurl)).StartCopyFromUriAsync(new Uri(urlSas));    //可复制256M以上文件
+
             //var azureClient = _azureStorage.GetBlobContainerClient($"0-public");//获取容器连接地址
 
             ////查询目录下所有容器路径
@@ -1548,30 +1553,47 @@ namespace TEAMModelBI.Controllers.BITest
             return Ok(new { state = 200, filelist });
         }
 
-        [HttpPost("test-copy-file")]
-        public async Task<IActionResult> TestCaopyFile()
+        /// <summary>
+        /// 计算一年每月的数据
+        /// </summary>
+        /// <param name="jsonElement"></param>
+        /// <returns></returns>
+        [HttpPost("get-yearmonsum")]
+        public async Task<IActionResult> GetYearMonthSum(JsonElement jsonElement)
         {
-            string blobName = "cswznb";
-            string oldFile = "https://teammodeltest.blob.core.chinacloudapi.cn/cswznb/survey%2Fd011c05b-c009-0a53-428f-b871a58092c7%2Findex.json";//"https://teammodeltest.blob.core.chinacloudapi.cn/1636016499/yxpt%2Fstandard2%2FTEAMModelOS%E6%95%B0%E6%8D%AE%E5%BA%93.doc";
-            string oldId = "survey";
-            string newId = "survey1";
+            var cosmosClient = _azureCosmos.GetCosmosClient();
+            //LessonStats lessonStats =await StatsWay.GetLessStats(cosmosClient, "hbcn");
+            //ActivityStats artStats = await StatsWay.GetActStats(cosmosClient, "hbcn");
+            //var tempSc = SchoolStatsWay.GetSingleSc(cosmosClient, "hbcn");
 
-            List<Task<CopyFromUriOperation>> filelist = new();   //可复制256M以上文件
-            var set = await BatchCopyFileService.SingleCopyFile(_azureStorage, blobName, oldFile, oldId, newId);
+            //return Ok(new { state = 200, ld= artStats.LastYear.Count, d = artStats.year.Count, artStats }); 
+            //示例矩阵
 
-            //var azureClient = _azureStorage.GetBlobContainerClient($"{blobName}");//获取容器连接地址
-            //string newurl = oldFile.Substring(oldFile.IndexOf($"{blobName}/") + $"{blobName}/".Length).Replace($"{oldId}", $"{newId}");//替换成新的容器路径
-            //string oldFileName = oldFile.Substring(oldFile.IndexOf($"{blobName}/") + $"{blobName}/".Length);
-            //var urlSas = _azureStorage.GetBlobSAS($"{blobName}", $"{HttpUtility.UrlDecode(oldFileName)}", BlobSasPermissions.Read | BlobSasPermissions.List);   //获取容器sas和有效期
-            ////var respCopy =  azureClient.GetBlobClient(HttpUtility.UrlDecode(newurl)).SyncCopyFromUri(new Uri(urlSas));    //可复制256M以下文件
-            //var respCopy1 = await azureClient.GetBlobClient(HttpUtility.UrlDecode(newurl)).StartCopyFromUriAsync(new Uri(urlSas));    //可复制256M以上文件
+            List<List<double>> matrixDou = new() {
+                new List<double>() { 6, 5, 4, 3, 2, 1},
+                new List<double>() { 2, 3, 4, 5, 6, 7 },
+                new List<double>() { 3, 4, 5, 6, 7, 8 },
+                new List<double>() { 4, 5, 6, 7, 8, 9 }
+            };
 
-            return Ok(new { state = 200 });
-        }
+            var artYear = DenseMatrix.OfColumns(matrixDou);
+            var rc = artYear.RowCount;
+            var cc = artYear.ColumnCount;
+            List<double> dous1 = new(); ;
 
-        [HttpPost("get-yearmonsum")]
-        public async Task<IActionResult> GetYearMonthSum(JsonElement jsonElement)
-        {
+            List<double> dous = new(); ;
+            for (int i = 0; i < artYear.RowCount; i++)
+            {
+                Console.WriteLine($"次数:{i}  ; 行数:{rc};列数:{cc}");
+                var cl = matrixDou.SelectMany(o => o.Skip(i).Take(1)).ToList();
+                var cl1 = matrixDou.SelectMany(o => o.Skip(i).Take(1)).ToList().Sum();
+                dous1.Add(cl1);
+                var stet = artYear.SubMatrix(i, 1, 0, cc);
+                var stet1 = artYear.SubMatrix(i, 1, 0, cc).ColumnSums().Sum();
+                dous.Add(stet1);
+                //var set = artYear.SubMatrix(0, 4, i, i+1).ColumnSums().Sum();
+                //dous.Add(set);
+            }
 
             var s = DateTimeOffset.UtcNow.Year - 1;
             DateTimeOffset date = new(DateTimeOffset.UtcNow.Year - 1, DateTimeOffset.UtcNow.Month, DateTimeOffset.UtcNow.Day, DateTimeOffset.UtcNow.Hour, DateTimeOffset.UtcNow.Minute, DateTimeOffset.UtcNow.Second, TimeSpan.Zero);
@@ -1586,9 +1608,13 @@ namespace TEAMModelBI.Controllers.BITest
             return Ok(new { state = RespondCode.Ok, leverycnt = leveryDay.Count, leveryDay, dayCnt = everyDay.Count, everyDay , monthty });
         }
 
-
-        [HttpPost("set-sc-state")]
-        public async Task<IActionResult> SetScState(JsonElement jsonElement) 
+        /// <summary>
+        /// 测试矩阵
+        /// </summary>
+        /// <param name="jsonElement"></param>
+        /// <returns></returns>
+        [HttpPost("set-matrix")]
+        public async Task<IActionResult> SetMatrix(JsonElement jsonElement) 
         {
             var cosmosClient = _azureCosmos.GetCosmosClient();
             //LessonStats lessonStats =await StatsWay.GetLessStats(cosmosClient, "hbcn");
@@ -1598,7 +1624,6 @@ namespace TEAMModelBI.Controllers.BITest
             //return Ok(new { state = 200, ld= artStats.LastYear.Count, d = artStats.year.Count, artStats }); 
             //示例矩阵
 
-
             List<List<double>> doubles = new() {
                 new List<double>() { 6, 5, 4, 3, 2, 1},
                 new List<double>() { 2, 3, 4, 5, 6, 7 },
@@ -1625,8 +1650,6 @@ namespace TEAMModelBI.Controllers.BITest
                 //dous.Add(set);
             }
 
-
-
             //          double[][] matrix1 = new double[][]
             //          {
             //new double[] { 1, 2, 3 },
@@ -1645,94 +1668,21 @@ namespace TEAMModelBI.Controllers.BITest
 
             return Ok(new { state = 200, dous1, dous /*tempSc*/ });
         }
-        /// <summary>
-        /// 打印矩阵
-        /// </summary>
-        /// <param name="matrix">待打印矩阵</param>
-        private static void PrintMatrix(double[][] matrix)
-        {
-            for (int i = 0; i < matrix.Length; i++)
-            {
-                for (int j = 0; j < matrix[i].Length; j++)
-                {
-                    Console.Write(matrix[i][j] + "\t");
-                    //注意不能写为:Console.Write(matrix[i][j] + '\t');
-                }
-                Console.WriteLine();
-            }
-        }
-        // <summary>
-        /// 矩阵加法
-        /// </summary>
-        /// <param name="matrix1">矩阵1</param>
-        /// <param name="matrix2">矩阵2</param>
-        /// <returns>和</returns>
-        private static double[][] MatrixAdd(double[][] matrix1, double[][] matrix2)
-        {
-            //矩阵1和矩阵2须为同型矩阵
-            if (MatrixCR(matrix1)[0] != MatrixCR(matrix2)[0] ||
-             MatrixCR(matrix1)[1] != MatrixCR(matrix2)[1])
-            {
-                throw new Exception("不同型矩阵无法进行加法运算");
-            }
-            //生成一个与matrix1同型的空矩阵
-            double[][] result = new double[matrix1.Length][];
-            for (int i = 0; i < result.Length; i++)
-            {
-                result[i] = new double[matrix1[i].Length];
-            }
-            //矩阵加法:把矩阵2各元素值加到矩阵1上,返回矩阵1
-            for (int i = 0; i < result.Length; i++)
-            {
-                for (int j = 0; j < result[i].Length; j++)
-                {
-                    result[i][j] = matrix1[i][j] + matrix2[i][j];
-                }
-            }
-            return result;
-        }
-        /// <summary>
-        /// 计算一个矩阵的行数和列数
-        /// </summary>
-        /// <param name="matrix">矩阵</param>
-        /// <returns>数组:行数、列数</returns>
-        private static int[] MatrixCR(double[][] matrix)
-        {
-            //接收到的参数不是矩阵则报异常
-            if (!isMatrix(matrix))
-            {
-                throw new Exception("接收到的参数不是矩阵");
-            }
-            //空矩阵行数列数都为0
-            if (!isMatrix(matrix) || matrix.Length == 0)
-            {
-                return new int[2] { 0, 0 };
-            }
-            return new int[2] { matrix.Length, matrix[0].Length };
-        }
 
-        /// <summary>
-        /// 判断一个二维数组是否为矩阵
-        /// </summary>
-        /// <param name="matrix">二维数组</param>
-        /// <returns>true:是矩阵 false:不是矩阵</returns>
-        private static bool isMatrix(double[][] matrix)
+        public async Task<IActionResult> SetSchoolEdition(JsonElement jsonElement) 
         {
-            //空矩阵是矩阵
-            if (matrix.Length < 1) return true;
-            //不同行列数如果不相等,则不是矩阵
-            int count = matrix[0].Length;
-            for (int i = 1; i < matrix.Length; i++)
-            {
-                if (matrix[i].Length != count)
-                {
-                    return false;
-                }
-            }
-            //各行列数相等,则是矩阵
-            return true;
+            if (!jsonElement.TryGetProperty("scId", out JsonElement scId)) return BadRequest();
+            
+
+
+
+
+
+            return Ok(new { state = 200 });
         }
 
+
+
         public class linqTest
         {
             public string id { get; set; }