public void QueryComparison() { //创建某天的模拟数据 DateTime startDate = new DateTime(2019, 7, 1); List <DensityDevice> devices = DensityDbSimulator.CreateDensityDevice(TestInit.ServiceProvider, 1, 1, 2, "", true); List <DateTime> dates = new List <DateTime> { startDate.AddYears(-1), startDate.AddMonths(-1), startDate.AddDays(-1), startDate }; DensityDbSimulator.CreateData(TestInit.ServiceProvider, devices, DataCreateMode.Sequence, dates, true); DensitiesManager manager = TestInit.ServiceProvider.GetRequiredService <DensitiesManager>(); foreach (DensityDevice device in devices) { foreach (var relation in device.DensityDevice_DensityChannels) { foreach (TrafficRegion region in relation.Channel.Regions) { //验证5分钟 var fiveCharts = manager.QueryComparison(region.DataId, DateTimeLevel.FiveMinutes, startDate, startDate.AddDays(1).AddMinutes(-5)); for (int i = 0; i < fiveCharts.Count; ++i) { fiveCharts[i] = fiveCharts[i].OrderBy(c => c.Axis).ToList(); } //验证同比环比的图表时间对其到第一个时间段 Assert.AreEqual(startDate, fiveCharts[0][0].Axis); Assert.AreEqual(startDate, fiveCharts[1][0].Axis); Assert.AreEqual(startDate, fiveCharts[2][0].Axis); //验证同比环比的remark是真实的时间 Assert.AreEqual(startDate.ToString("yyyy-MM-dd HH:mm"), fiveCharts[0][0].Remark); Assert.AreEqual(startDate.AddDays(-1).ToString("yyyy-MM-dd HH:mm"), fiveCharts[1][0].Remark); Assert.AreEqual(startDate.AddMinutes(-5).ToString("yyyy-MM-dd HH:mm"), fiveCharts[2][0].Remark); //验证图表中的数据数量 foreach (List <TrafficChart <DateTime, int> > charts in fiveCharts) { Assert.AreEqual(24 * 60 / 5, charts.Count); } var fifteenCharts = manager.QueryComparison(region.DataId, DateTimeLevel.FifteenMinutes, startDate, startDate.AddDays(1).AddMinutes(-15)); for (int i = 0; i < fifteenCharts.Count; ++i) { fifteenCharts[i] = fifteenCharts[i].OrderBy(c => c.Axis).ToList(); } Assert.AreEqual(startDate, fifteenCharts[0][0].Axis); Assert.AreEqual(startDate, fifteenCharts[1][0].Axis); Assert.AreEqual(startDate, fifteenCharts[2][0].Axis); Assert.AreEqual(startDate.ToString("yyyy-MM-dd HH:mm"), fifteenCharts[0][0].Remark); Assert.AreEqual(startDate.AddDays(-1).ToString("yyyy-MM-dd HH:mm"), fifteenCharts[1][0].Remark); Assert.AreEqual(startDate.AddMinutes(-15).ToString("yyyy-MM-dd HH:mm"), fifteenCharts[2][0].Remark); foreach (List <TrafficChart <DateTime, int> > charts in fifteenCharts) { Assert.AreEqual(24 * 60 / 15, charts.Count); } var hourCharts = manager.QueryComparison(region.DataId, DateTimeLevel.Hour, startDate, startDate.AddDays(1).AddHours(-1)); for (int i = 0; i < hourCharts.Count; ++i) { hourCharts[i] = hourCharts[i].OrderBy(c => c.Axis).ToList(); } Assert.AreEqual(startDate, hourCharts[0][0].Axis); Assert.AreEqual(startDate, hourCharts[1][0].Axis); Assert.AreEqual(startDate, hourCharts[2][0].Axis); Assert.AreEqual(startDate.ToString("yyyy-MM-dd HH"), hourCharts[0][0].Remark); Assert.AreEqual(startDate.AddDays(-1).ToString("yyyy-MM-dd HH"), hourCharts[1][0].Remark); Assert.AreEqual(startDate.AddHours(-1).ToString("yyyy-MM-dd HH"), hourCharts[2][0].Remark); foreach (List <TrafficChart <DateTime, int> > charts in hourCharts) { Assert.AreEqual(24, charts.Count); } var dayCharts = manager.QueryComparison(region.DataId, DateTimeLevel.Day, startDate, startDate); for (int i = 0; i < dayCharts.Count; ++i) { dayCharts[i] = dayCharts[i].OrderBy(c => c.Axis).ToList(); } Assert.AreEqual(startDate, dayCharts[0][0].Axis); Assert.AreEqual(startDate, dayCharts[1][0].Axis); Assert.AreEqual(startDate, dayCharts[2][0].Axis); Assert.AreEqual(startDate.ToString("yyyy-MM-dd"), dayCharts[0][0].Remark); Assert.AreEqual(startDate.AddMonths(-1).ToString("yyyy-MM-dd"), dayCharts[1][0].Remark); Assert.AreEqual(startDate.AddDays(-1).ToString("yyyy-MM-dd"), dayCharts[2][0].Remark); foreach (List <TrafficChart <DateTime, int> > charts in dayCharts) { Assert.AreEqual(1, charts.Count); } var monthCharts = manager.QueryComparison(region.DataId, DateTimeLevel.Month, TimePointConvert.CurrentTimePoint(DateTimeLevel.Month, startDate), TimePointConvert.CurrentTimePoint(DateTimeLevel.Month, startDate)); for (int i = 0; i < monthCharts.Count; ++i) { monthCharts[i] = monthCharts[i].OrderBy(c => c.Axis).ToList(); } Assert.AreEqual(TimePointConvert.CurrentTimePoint(DateTimeLevel.Month, startDate), monthCharts[0][0].Axis); Assert.AreEqual(TimePointConvert.CurrentTimePoint(DateTimeLevel.Month, startDate), monthCharts[1][0].Axis); Assert.AreEqual(TimePointConvert.CurrentTimePoint(DateTimeLevel.Month, startDate), monthCharts[2][0].Axis); Assert.AreEqual(startDate.ToString("yyyy-MM"), monthCharts[0][0].Remark); Assert.AreEqual(startDate.AddYears(-1).ToString("yyyy-MM"), monthCharts[1][0].Remark); Assert.AreEqual(startDate.AddMonths(-1).ToString("yyyy-MM"), monthCharts[2][0].Remark); foreach (List <TrafficChart <DateTime, int> > charts in monthCharts) { Assert.AreEqual(1, charts.Count); } } } } }
public List <List <TrafficChart <DateTime, int> > > QueryComparison([FromRoute] string dataId, [FromQuery] DateTimeLevel level, [FromQuery] DateTime startTime, [FromQuery] DateTime endTime) { return(_manager.QueryComparison(dataId, level, startTime, endTime)); }