From f00f5455999503a97b981d161a7564da23b6793f Mon Sep 17 00:00:00 2001
From: tangxu <76880903@qq.com>
Date: 星期二, 21 三月 2023 13:30:03 +0800
Subject: [PATCH] 成行 增加 速度修正,昨天遗忘了

---
 Application/IStation.Application.OpenApi/test/report/Report_ShysController.cs |  100 +++++++++++++++++++++++++++++++++++++------------
 1 files changed, 75 insertions(+), 25 deletions(-)

diff --git a/Application/IStation.Application.OpenApi/test/report/Report_ShysController.cs b/Application/IStation.Application.OpenApi/test/report/Report_ShysController.cs
index ef4bbfe..6940c5f 100644
--- a/Application/IStation.Application.OpenApi/test/report/Report_ShysController.cs
+++ b/Application/IStation.Application.OpenApi/test/report/Report_ShysController.cs
@@ -8,6 +8,7 @@
 using System.ComponentModel.DataAnnotations;
 using Mapster;
 using Microsoft.AspNetCore.Authorization;
+using Furion.FriendlyException;
 
 namespace IStation.Application
 {
@@ -18,7 +19,9 @@
     [ApiDescriptionSettings("OpenApi", Name = "娴嬭瘯鎶ヨ〃", Order = 1001)]
     public class Report_ShysController : IDynamicApiController
     {
-
+        /// <summary>
+        /// 
+        /// </summary>
         public readonly static Dictionary<string, string> ProvinceCodeDic = new Dictionary<string, string> { { "鍥涘窛鐪�", "510000" }, { "鍖椾含甯�", "110000" }, { "澶╂触甯�", "120000" }, { "娌冲寳鐪�", "130000" }, { "灞辫タ鐪�", "140000" }, { "鍐呰挋鍙よ嚜娌诲尯", "150000" }, { "杈藉畞鐪�", "210000" }, { "鍚夋灄鐪�", "220000" }, { "榛戦緳姹熺渷", "230000" }, { "涓婃捣甯�", "310000" }, { "姹熻嫃鐪�", "320000" }, { "娴欐睙鐪�", "330000" }, { "瀹夊窘鐪�", "340000" }, { "绂忓缓鐪�", "350000" }, { "姹熻タ鐪�", "360000" }, { "灞变笢鐪�", "370000" }, { "娌冲崡鐪�", "410000" }, { "婀栧寳鐪�", "420000" }, { "婀栧崡鐪�", "430000" }, { "骞夸笢鐪�", "440000" }, { "骞胯タ鑷不鍖�", "450000" }, { "娴峰崡鐪�", "460000" }, { "閲嶅簡甯�", "500000" }, { "璐靛窞鐪�", "520000" }, { "浜戝崡鐪�", "530000" }, { "瑗胯棌鑷不鍖�", "540000" }, { "闄曡タ鐪�", "610000" }, { "鐢樿們鐪�", "620000" }, { "闈掓捣鐪�", "630000" }, { "瀹佸鑷不鍖�", "640000" }, { "鏂扮枂鑷不鍖�", "650000" }, { "鍙版咕鐪�", "710000" }, { "棣欐腐鐗瑰埆琛屾斂鍖�", "810000" }, { "婢抽棬鐗瑰埆琛屾斂鍖�", "820000" } };
 
         /// <summary>
@@ -43,36 +46,83 @@
                 return default;
 
             var dto = new UserLoginLogReportDto();
-            dto.LoginLogList = new List<UserLoginLogItem>();
+            dto.LoginLogList = new List<LoginLogItem>();
+            dto.LoginStatisticsList = new List<LoginStatistics>();
             dto.TotalUsers = users.Count;
-            var uniqueVisitorList = logs.DistinctBy(x => x.UserID).ToList();
-            var last7Days = DateTime.Now.AddDays(-7);
-            var last30Days = DateTime.Now.AddDays(-30);
-            dto.TodayUV = uniqueVisitorList.Where(x => x.LoginTime >= DateTime.Today).Count();
-            dto.Last7DaysUV = uniqueVisitorList.Where(x => x.LoginTime >= last7Days).Count();
-            dto.Last30DaysUV = uniqueVisitorList.Where(x => x.LoginTime >= last30Days).Count();
-
-            var logGroups = logs.GroupBy(x => x.CorpID);
-            foreach (var logGroup in logGroups)
+            dto.LogSummaryList = logs.GroupBy(x => x.LoginTime.Date).Select(x => new LogSummary() {Date = x.Key.ToString("d"), Visitors = x.Count() }).ToList();
+       
+        var uniqueVisitorList = logs.DistinctBy(x => x.UserID).ToList();
+            var yesterday = DateTime.Today.AddDays(-1);
+            var last7Days = yesterday.AddDays(-7);
+            var last30Days = yesterday.AddDays(-30);
+            if (uniqueVisitorList != null && uniqueVisitorList.Count > 0)
             {
-                var corp = corps.Find(x => x.ID == logGroup.Key);
-                foreach (var log in logGroup)
-                {
-                    var area = RandomValues(ProvinceCodeDic, 1).First().Key;
-                    var item = new UserLoginLogItem(log, corp.ShortName, area);
-                    dto.LoginLogList.Add(item);
-                }
+                dto.YesterdayUV = uniqueVisitorList.Where(x => x.LoginTime >= yesterday).Count();
+                dto.Last7DaysUV = uniqueVisitorList.Where(x => x.LoginTime >= last7Days).Count();
+                dto.Last30DaysUV = uniqueVisitorList.Where(x => x.LoginTime >= last30Days).Count();
             }
 
-            var ReportPath = Path.Combine(Settings.DataFile.SaveFileUrl, @"UserloginLogReport");
-            if (!Directory.Exists(ReportPath))
-                Directory.CreateDirectory(ReportPath);
+            try
+            {
 
-            var yyMM = DateTime.Today.ToString("yyyy-MM");
-            var filePath = Path.Combine(ReportPath, yyMM + ".xml");
-            filePath = filePath.Replace(@"\\", @"/");
+                LogHelper.Info("鐢熸垚鍒楄〃!");
+                var logGroups = logs.GroupBy(x => x.CorpID);
+                foreach (var logGroup in logGroups)
+                {
+                    var corp = corps.Find(x => x.ID == logGroup.Key);
+                    var corpName = corp?.ShortName;
+                    var list = new List<LoginLogItem>();
+                    foreach (var log in logGroup)
+                    {
+                        var area = RandomValues(ProvinceCodeDic, 1).First().Key;
+                        var softName = string.Empty;
+                        switch (log.SoftType)
+                        {
+                            case IStation.SoftType.CS_瀹㈡埛绔�:
+                                softName = "瀹㈡埛绔�";
+                                break;
+                            case IStation.SoftType.BS_缃戦〉绔�:
+                                softName = "缃戦〉绔�";
+                                break;
+                            case IStation.SoftType.Wechat_寰俊灏忕▼搴�:
+                                softName = "灏忕▼搴�";
+                                break;
+                            case IStation.SoftType.App_绉诲姩绔�:
+                                softName = "APP";
+                                break;
+                            default:
+                                softName = "鏈煡";
+                                break;
+                        }
+                        var item = new LoginLogItem(log, corpName, area, softName);
+                        list.Add(item);
+                    }
+                    var statistics = list.GroupBy(x => x.SoftName).Select(x => new LoginStatistics() { CorpName = corpName, Software = x.Key, Visitors = x.Count() });
+                    dto.LoginStatisticsList.AddRange(statistics);
+                    dto.LoginLogList.AddRange(list);
+                }
 
-            XmlHelper<UserLoginLogReportDto>.SaveObjectXmlFile(filePath, dto);
+         
+
+                LogHelper.Info("鐢熸垚鏂囦欢!");
+                var ReportPath = Path.Combine(Settings.File.FileStorageFolder, @"UserLoginLogReport");
+                if (!Directory.Exists(ReportPath))
+                    Directory.CreateDirectory(ReportPath);
+
+                //var filePath = Path.Combine(ReportPath, "UserLoginLogReport" + ".xml");
+                var filePath = "C:\\FineReport\\tomcat-win64\\webapps\\webroot\\WEB-INF\\reportlets\\file\\UserLoginLogReport.xml";
+                if (File.Exists(filePath))
+                {
+                    File.Delete(filePath);
+                }
+                XmlHelper<UserLoginLogReportDto>.SaveObjectXmlFile(filePath, dto);
+                LogHelper.Info("淇濆瓨鏂囦欢!");
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error(ex.Message);
+            }
+
             return dto;
         }
 

--
Gitblit v1.9.3