using Cksoft.Data; using DllEapEntity.OFILM; using DllUfpDal; using DllUfpEntity.Dto; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DllEapDal.OFILM { public class HomeDal { private IDatabase db; public HomeDal(IDatabase db) { this.db = db; } public HomeData get() { var data = new HomeData(); DateTime end = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")).AddMilliseconds(-1); DateTime start = end.AddMonths(-1).AddMilliseconds(1); var dal = new VisitLogDal(db); /*string filter = $@" and a.VisitTime>='{Mstart.ToString("yyyy-MM-dd 00:00:00")}' and a.VisitTime<='{end.ToString("yyyy-MM-dd 00:00:00")}'"; data.total = dal.GetReportTotalInfo(filter, "").Count; data.average = data.total / 30;*/ var dto = dal.GetVisitLogByDate(start, end).ToList(); List visitLogs = new List(); string sql = $@"SELECT count(1) from visitlog where VisitTime<'{end.ToString("yyyy-MM-dd HH:mm:ss")}'"; var sum = Convert.ToInt32(db.FindObject(sql)); for (int i = 0; i < dto.Count-1; i++) { data.total += dto[i].Count; if (dto.Count - i <= 8) { visitLogs.Add(dto[i]); } } List list = new List(); for (int i = 6; i >=0; i--) { var date = end.AddDays(-i); var count = Convert.ToInt32(db.FindObject($@"SELECT COUNT(1) FROM (select UserCode from visitlog where VisitTime>='{date.ToString("yyyy-MM-dd 00:00:00")} ' and VisitTime<='{date.ToString("yyyy-MM-dd 23:59:59.999")}' group by usercode) t ")); list.Add(new VisitLogAnalysisDto() { Count = count, Date = DateTime.Parse(date.ToString("yyyy-MM-dd")) }); } /* var days = end.AddMilliseconds(1).Subtract(DateTime.Parse("2022-01-08 00:00:00")).TotalDays;*/ data.dto.XData = visitLogs.Select(c => c.Date.Value.ToString("yyyy-MM-dd")).ToList(); List y1 = new List(); List y2 = new List(); data.average = sum / Convert.ToInt32(end.AddMilliseconds(1).Subtract(DateTime.Parse("2021-03-16 00:00:00")).TotalDays); foreach (var item in visitLogs) { var da = DateTime.Parse(item.Date.Value.ToString("yyyy-MM-dd")); y1.Add(Convert.ToDecimal(item.Count)); y2.Add(Convert.ToDecimal(list.Where(c => c.Date == da).FirstOrDefault().Count)); } data.dto.SeriesData.Add(new Series { Name = "当天访问量", Type = "line", Data = y1,YAxis=0 }); data.dto.SeriesData.Add(new Series { Name = "当天访问人次", Type = "line", Data = y2,YAxis=1}); return data; } } }