| | |
| | | [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> |
| | |
| | | return default; |
| | | |
| | | var dto = new UserLoginLogReportDto(); |
| | | dto.LoginLogList = new List<UserLoginLogItem>(); |
| | | dto.LogSummaryList = logs.GroupBy(x => x.LoginTime.Date).Select(x => new LogSummary() { DateTime = x.Key, Visitors = x.Count() }).ToList(); |
| | | dto.LoginLogList = new List<LoginLogItem>(); |
| | | dto.LoginStatisticsList = new List<LoginStatistics>(); |
| | | dto.TotalUsers = users.Count; |
| | | |
| | | var uniqueVisitorList = logs.DistinctBy(x => x.UserID).ToList(); |
| | | var today = DateTime.Today; |
| | | var last7Days = today.AddDays(-7); |
| | | var last30Days = today.AddDays(-30); |
| | | 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) |
| | | { |
| | | dto.TodayUV = uniqueVisitorList.Where(x => x.LoginTime >= today).Count(); |
| | | 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(); |
| | | } |
| | |
| | | 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 item = new UserLoginLogItem(log, corp.ShortName, area); |
| | | dto.LoginLogList.Add(item); |
| | | 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); |
| | | } |
| | | |
| | | |
| | | |
| | | LogHelper.Info("生成文件!"); |
| | | var ReportPath = Path.Combine(Settings.File.FileStorageFolder, @"UserLoginLogReport"); |
| | | if (!Directory.Exists(ReportPath)) |
| | | Directory.CreateDirectory(ReportPath); |
| | | |
| | | var yyMM = DateTime.Today.ToString("yyyy-MM"); |
| | | var filePath = Path.Combine(ReportPath, yyMM + ".xml"); |
| | | filePath = filePath.Replace(@"\\", @"/"); |
| | | |
| | | LogHelper.Info("保存文件!"); |
| | | //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) |
| | | { |