每日上报曲线接口修改
parent
0129d9045f
commit
15e9b1c215
|
|
@ -663,47 +663,172 @@ namespace OpenAuth.App.ServiceApp.FireManagement
|
|||
{
|
||||
using (var db = base.UnitWork.CreateContext())
|
||||
{
|
||||
//if (type == 1)
|
||||
//{
|
||||
// DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
|
||||
// var list = await db.FmFireclueInfo.AsQueryable()
|
||||
// .Where(r => r.ReportTime >= firstDayOfMonth)
|
||||
// .GroupBy(r => new { r.ReportTime.Day })
|
||||
// .Select(r => new FireInfoStateForChart
|
||||
// {
|
||||
// DateTime = r.ReportTime.Day.ToString() + "日",
|
||||
// TreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State >= 3, 1, 0)),
|
||||
// UntreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State < 3, 1, 0))
|
||||
// }).ToListAsync();
|
||||
// return new Response<List<FireInfoStateForChart>> { Result = list };
|
||||
//}
|
||||
//else if (type == 2)
|
||||
//{
|
||||
// DateTime firstDayOfYear = new DateTime(DateTime.Now.Year, 1, 1);
|
||||
// var list = await db.FmFireclueInfo.AsQueryable()
|
||||
// .Where(r => r.ReportTime >= firstDayOfYear)
|
||||
// .GroupBy(r => new { r.ReportTime.Month })
|
||||
// .Select(r => new FireInfoStateForChart
|
||||
// {
|
||||
// DateTime = r.ReportTime.Month.ToString() + "月",
|
||||
// TreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State >= 3, 1, 0)),
|
||||
// UntreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State < 3, 1, 0))
|
||||
// }).ToListAsync();
|
||||
// return new Response<List<FireInfoStateForChart>> { Result = list };
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// DateTime firstDayOfYear = DateTime.Now.AddYears(-3);
|
||||
// var list = await db.FmFireclueInfo.AsQueryable()
|
||||
// .Where(r => r.ReportTime >= firstDayOfYear)
|
||||
// .GroupBy(r => new { r.ReportTime.Year })
|
||||
// .Select(r => new FireInfoStateForChart
|
||||
// {
|
||||
// DateTime = r.ReportTime.Year.ToString() + "年",
|
||||
// TreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State >= 3, 1, 0)),
|
||||
// UntreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State < 3, 1, 0))
|
||||
// }).ToListAsync();
|
||||
// return new Response<List<FireInfoStateForChart>> { Result = list };
|
||||
//}
|
||||
|
||||
if (type == 1)
|
||||
{
|
||||
DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
|
||||
var list = await db.FmFireclueInfo.AsQueryable()
|
||||
.Where(r => r.ReportTime >= firstDayOfMonth)
|
||||
.GroupBy(r => new { r.ReportTime.Day })
|
||||
.Select(r => new FireInfoStateForChart
|
||||
// 计算14天的日期范围
|
||||
DateTime startDate = DateTime.Now.AddDays(-14).Date;
|
||||
DateTime endDate = DateTime.Now.Date;
|
||||
|
||||
// 生成14天的日期列表
|
||||
var dateRange = Enumerable.Range(0, (endDate - startDate).Days + 1)
|
||||
.Select(offset => startDate.AddDays(offset))
|
||||
.Select(date => new
|
||||
{
|
||||
DateTime = r.ReportTime.Day.ToString() + "日",
|
||||
Date = date,
|
||||
DayString = date.Month.ToString() + "." + date.Day.ToString()
|
||||
})
|
||||
.ToList();
|
||||
|
||||
// 查询实际数据
|
||||
var dataQuery = await db.FmFireclueInfo.AsQueryable()
|
||||
.Where(r => r.ReportTime >= startDate && r.ReportTime <= endDate)
|
||||
.GroupBy(r => new { r.ReportTime.Date })
|
||||
.Select(r => new FireInfoState
|
||||
{
|
||||
Date = r.ReportTime.Date,
|
||||
TreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State >= 3, 1, 0)),
|
||||
UntreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State < 3, 1, 0))
|
||||
}).ToListAsync();
|
||||
|
||||
// 左连接,确保所有日期都显示
|
||||
var list = (from date in dateRange
|
||||
join data in dataQuery on date.Date equals data.Date into gj
|
||||
from subData in gj.DefaultIfEmpty()
|
||||
orderby date.Date ascending
|
||||
select new FireInfoStateForChart
|
||||
{
|
||||
DateTime = date.DayString,
|
||||
TreatedCount = subData?.TreatedCount ?? 0,
|
||||
UntreatedCount = subData?.UntreatedCount ?? 0
|
||||
})
|
||||
.ToList();
|
||||
|
||||
return new Response<List<FireInfoStateForChart>> { Result = list };
|
||||
}
|
||||
else if (type == 2)
|
||||
{
|
||||
DateTime firstDayOfYear = new DateTime(DateTime.Now.Year, 1, 1);
|
||||
var list = await db.FmFireclueInfo.AsQueryable()
|
||||
.Where(r => r.ReportTime >= firstDayOfYear)
|
||||
.GroupBy(r => new { r.ReportTime.Month })
|
||||
.Select(r => new FireInfoStateForChart
|
||||
// 计算日期范围
|
||||
var now = DateTime.Now;
|
||||
var startDate = new DateTime(now.Year, now.Month, 1).AddMonths(-11);
|
||||
var endDate = new DateTime(now.Year, now.Month, 1).AddMonths(1).AddDays(-1);
|
||||
|
||||
// 生成月份列表
|
||||
var months = Enumerable.Range(0, 12)
|
||||
.Select(i => new
|
||||
{
|
||||
DateTime = r.ReportTime.Month.ToString() + "月",
|
||||
Year = startDate.AddMonths(i).Year,
|
||||
Month = startDate.AddMonths(i).Month,
|
||||
Display = FormatMonthDisplay(startDate.AddMonths(i))
|
||||
})
|
||||
.ToList();
|
||||
|
||||
// 查询数据
|
||||
var data = await db.FmFireclueInfo.AsQueryable()
|
||||
.Where(r => r.ReportTime >= startDate && r.ReportTime <= endDate)
|
||||
.GroupBy(r => new { r.ReportTime.Year, r.ReportTime.Month })
|
||||
.Select(r => new
|
||||
{
|
||||
Year = r.ReportTime.Year,
|
||||
Month = r.ReportTime.Month,
|
||||
TreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State >= 3, 1, 0)),
|
||||
UntreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State < 3, 1, 0))
|
||||
}).ToListAsync();
|
||||
return new Response<List<FireInfoStateForChart>> { Result = list };
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
// 使用LINQ左连接
|
||||
var result = (from month in months
|
||||
join d in data
|
||||
on new { month.Year, month.Month } equals new { d.Year, d.Month } into gj
|
||||
from subData in gj.DefaultIfEmpty()
|
||||
orderby month.Year, month.Month
|
||||
select new FireInfoStateForChart
|
||||
{
|
||||
DateTime = month.Display,
|
||||
TreatedCount = subData?.TreatedCount ?? 0,
|
||||
UntreatedCount = subData?.UntreatedCount ?? 0
|
||||
}).ToList();
|
||||
return new Response<List<FireInfoStateForChart>> { Result = result };
|
||||
}
|
||||
else
|
||||
{
|
||||
DateTime firstDayOfYear = DateTime.Now.AddYears(-3);
|
||||
var list = await db.FmFireclueInfo.AsQueryable()
|
||||
.Where(r => r.ReportTime >= firstDayOfYear)
|
||||
.GroupBy(r => new { r.ReportTime.Year })
|
||||
.Select(r => new FireInfoStateForChart
|
||||
// 计算统计年份范围
|
||||
int currentYear = DateTime.Now.Year;
|
||||
int startYear = currentYear - 5 + 1;
|
||||
|
||||
// 生成年份范围
|
||||
var years = Enumerable.Range(startYear, 5)
|
||||
.Select(y => y)
|
||||
.ToList();
|
||||
|
||||
// 查询数据
|
||||
var queryData = await db.FmFireclueInfo.AsQueryable()
|
||||
.Where(r => r.ReportTime.Year >= startYear && r.ReportTime.Year <= currentYear)
|
||||
.GroupBy(r => r.ReportTime.Year)
|
||||
.Select(r => new
|
||||
{
|
||||
DateTime = r.ReportTime.Year.ToString() + "年",
|
||||
Year = r.ReportTime.Year,
|
||||
TreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State >= 3, 1, 0)),
|
||||
UntreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State < 3, 1, 0))
|
||||
}).ToListAsync();
|
||||
return new Response<List<FireInfoStateForChart>> { Result = list };
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
// 生成结果,确保所有年份都有数据
|
||||
var result = new List<FireInfoStateForChart>();
|
||||
foreach (var year in years)
|
||||
{
|
||||
var yearData = queryData.FirstOrDefault(d => d.Year == year);
|
||||
|
||||
result.Add(new FireInfoStateForChart
|
||||
{
|
||||
DateTime = year.ToString() + "年",
|
||||
TreatedCount = yearData?.TreatedCount ?? 0,
|
||||
UntreatedCount = yearData?.UntreatedCount ?? 0
|
||||
});
|
||||
}
|
||||
return new Response<List<FireInfoStateForChart>> { Result = result };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -714,49 +839,152 @@ namespace OpenAuth.App.ServiceApp.FireManagement
|
|||
{
|
||||
if (type == 1)
|
||||
{
|
||||
DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
|
||||
var list = await db.FmFireclueInfo.AsQueryable()
|
||||
.Where(r => r.ReportTime >= firstDayOfMonth)
|
||||
.GroupBy(r => new { r.ReportTime.Day })
|
||||
.Select(r => new FireInfoDegreeForChart
|
||||
// 计算14天的日期范围
|
||||
DateTime startDate = DateTime.Now.AddDays(-14).Date;
|
||||
DateTime endDate = DateTime.Now.Date;
|
||||
|
||||
// 生成14天的日期列表
|
||||
var dateRange = Enumerable.Range(0, (endDate - startDate).Days + 1)
|
||||
.Select(offset => startDate.AddDays(offset))
|
||||
.Select(date => new
|
||||
{
|
||||
DateTime = r.ReportTime.Day.ToString() + "日",
|
||||
Date = date,
|
||||
DayString =date.Month.ToString()+"." +date.Day.ToString()
|
||||
})
|
||||
.ToList();
|
||||
|
||||
// 查询实际数据
|
||||
var dataQuery = await db.FmFireclueInfo.AsQueryable()
|
||||
.Where(r => r.ReportTime >= startDate && r.ReportTime <= endDate)
|
||||
.GroupBy(r => new { r.ReportTime.Date })
|
||||
.Select(r => new FireInfoDegree
|
||||
{
|
||||
Date = r.ReportTime.Date,
|
||||
ExtraLargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 1, 1, 0)),
|
||||
LargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 2, 1, 0))
|
||||
}).ToListAsync();
|
||||
|
||||
// 左连接,确保所有日期都显示
|
||||
var list = (from date in dateRange
|
||||
join data in dataQuery on date.Date equals data.Date into gj
|
||||
from subData in gj.DefaultIfEmpty()
|
||||
select new FireInfoDegreeForChart
|
||||
{
|
||||
DateTime = date.DayString,
|
||||
ExtraLargeCount = subData?.ExtraLargeCount ?? 0,
|
||||
LargeCount = subData?.LargeCount ?? 0
|
||||
})
|
||||
.OrderBy(x => x.DateTime) // 按日期排序
|
||||
.ToList();
|
||||
|
||||
return new Response<List<FireInfoDegreeForChart>> { Result = list };
|
||||
}
|
||||
else if (type == 2)
|
||||
{
|
||||
DateTime firstDayOfYear = new DateTime(DateTime.Now.Year, 1, 1);
|
||||
var list = await db.FmFireclueInfo.AsQueryable()
|
||||
.Where(r => r.ReportTime >= firstDayOfYear)
|
||||
.GroupBy(r => new { r.ReportTime.Month })
|
||||
.Select(r => new FireInfoDegreeForChart
|
||||
// 计算日期范围
|
||||
var now = DateTime.Now;
|
||||
var startDate = new DateTime(now.Year, now.Month, 1).AddMonths(-11);
|
||||
var endDate = new DateTime(now.Year, now.Month, 1).AddMonths(1).AddDays(-1);
|
||||
|
||||
// 生成月份列表
|
||||
var months = Enumerable.Range(0, 12)
|
||||
.Select(i => new
|
||||
{
|
||||
DateTime = r.ReportTime.Month.ToString() + "月",
|
||||
Year = startDate.AddMonths(i).Year,
|
||||
Month = startDate.AddMonths(i).Month,
|
||||
Display = FormatMonthDisplay(startDate.AddMonths(i))
|
||||
})
|
||||
.ToList();
|
||||
|
||||
// 查询数据
|
||||
var data = await db.FmFireclueInfo.AsQueryable()
|
||||
.Where(r => r.ReportTime >= startDate && r.ReportTime <= endDate)
|
||||
.GroupBy(r => new { r.ReportTime.Year, r.ReportTime.Month })
|
||||
.Select(r => new
|
||||
{
|
||||
Year = r.ReportTime.Year,
|
||||
Month = r.ReportTime.Month,
|
||||
ExtraLargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 1, 1, 0)),
|
||||
LargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 2, 1, 0))
|
||||
}).ToListAsync();
|
||||
return new Response<List<FireInfoDegreeForChart>> { Result = list };
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
// 使用LINQ左连接
|
||||
var result = (from month in months
|
||||
join d in data
|
||||
on new { month.Year, month.Month } equals new { d.Year, d.Month } into gj
|
||||
from subData in gj.DefaultIfEmpty()
|
||||
orderby month.Year, month.Month
|
||||
select new FireInfoDegreeForChart
|
||||
{
|
||||
DateTime = month.Display,
|
||||
ExtraLargeCount = subData?.ExtraLargeCount ?? 0,
|
||||
LargeCount = subData?.LargeCount ?? 0
|
||||
}).ToList();
|
||||
return new Response<List<FireInfoDegreeForChart>> { Result = result };
|
||||
}
|
||||
else
|
||||
{
|
||||
DateTime firstDayOfYear = DateTime.Now.AddYears(-3);
|
||||
var list = await db.FmFireclueInfo.AsQueryable()
|
||||
.Where(r => r.ReportTime >= firstDayOfYear)
|
||||
.GroupBy(r => new { r.ReportTime.Year })
|
||||
.Select(r => new FireInfoDegreeForChart
|
||||
// 计算统计年份范围
|
||||
int currentYear = DateTime.Now.Year;
|
||||
int startYear = currentYear - 5 + 1;
|
||||
|
||||
// 生成年份范围
|
||||
var years = Enumerable.Range(startYear, 5)
|
||||
.Select(y => y)
|
||||
.ToList();
|
||||
|
||||
// 查询数据
|
||||
var queryData = await db.FmFireclueInfo.AsQueryable()
|
||||
.Where(r => r.ReportTime.Year >= startYear && r.ReportTime.Year <= currentYear)
|
||||
.GroupBy(r => r.ReportTime.Year)
|
||||
.Select(r => new
|
||||
{
|
||||
DateTime = r.ReportTime.Year.ToString() + "年",
|
||||
Year = r.ReportTime.Year,
|
||||
ExtraLargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 1, 1, 0)),
|
||||
LargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 2, 1, 0))
|
||||
}).ToListAsync();
|
||||
return new Response<List<FireInfoDegreeForChart>> { Result = list };
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
// 生成结果,确保所有年份都有数据
|
||||
var result = new List<FireInfoDegreeForChart>();
|
||||
foreach (var year in years)
|
||||
{
|
||||
var yearData = queryData.FirstOrDefault(d => d.Year == year);
|
||||
|
||||
result.Add(new FireInfoDegreeForChart
|
||||
{
|
||||
DateTime = year.ToString() + "年",
|
||||
ExtraLargeCount = yearData?.ExtraLargeCount ?? 0,
|
||||
LargeCount = yearData?.LargeCount ?? 0
|
||||
});
|
||||
}
|
||||
return new Response<List<FireInfoDegreeForChart>> { Result = result };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 格式化月份显示
|
||||
private string FormatMonthDisplay(DateTime date)
|
||||
{
|
||||
var currentYear = DateTime.Now.Year;
|
||||
|
||||
//if (date.Year == currentYear)
|
||||
//{
|
||||
// return $"{date.Month}月";
|
||||
//}
|
||||
//else if (date.Year == currentYear - 1)
|
||||
//{
|
||||
// return $"去年{date.Month}月";
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// return $"{date.Year % 100}年{date.Month}月";
|
||||
//}
|
||||
|
||||
return $"{date.Year % 100}.{date.Month}";
|
||||
}
|
||||
|
||||
//查询火情和任务列表
|
||||
public async Task<Response<List<FmFireclueinfoLog>>> GetFireClueLog(long id)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -12,4 +12,11 @@ namespace OpenAuth.App.ServiceApp.FireManagement.Response
|
|||
public int ExtraLargeCount { get; set; }
|
||||
public int LargeCount { get; set; }
|
||||
}
|
||||
|
||||
public class FireInfoDegree
|
||||
{
|
||||
public DateTime Date { get; set; }
|
||||
public int ExtraLargeCount { get; set; }
|
||||
public int LargeCount { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,4 +12,11 @@ namespace OpenAuth.App.ServiceApp.FireManagement.Response
|
|||
public int TreatedCount { get; set; }
|
||||
public int UntreatedCount { get; set; }
|
||||
}
|
||||
|
||||
public class FireInfoState
|
||||
{
|
||||
public DateTime Date { get; set; }
|
||||
public int TreatedCount { get; set; }
|
||||
public int UntreatedCount { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue