使用 站点日均查询 方法 GetAir5MinListAsync (分钟) GetDATStationHourPaged (小时) GetQueryableByConditions (日数据) 、GetReportForRangeListAsync(月、年数据) 获取数据
private IQueryable<DATStationDay> GetQueryableByConditions(GetDATStationDayDto input)
{
Check.NotNullOrEmpty(input.TimePoint, nameof(input.TimePoint));
var startTime = DateTime.Now;
var endTime = DateTime.Now;
if (input.TimePoint.Count == 1)
{
startTime = input.TimePoint[0];
endTime = startTime;
}
else
{
startTime = input.TimePoint[0];
endTime = input.TimePoint[1];
}
var queryable = _repository
.Where(x => x.TimePoint >= startTime && x.TimePoint <= endTime && x.DataType == input.DataType.GetValue())
.WhereIf(!input.Codes.IsNullOrEmpty(), x => input.Codes.Contains(x.Code));
return queryable;
}
[Table("dat_station_day")]
[Description("站点日均值表")]
public class DATStationDay : DOEntity
{
[Column("name")]
[Required]
[MaxLength(50)]
[Description("站点名称")]
public string Name { get; set; }
[Column("code")]
[Required]
[MaxLength(50)]
[Description("站点编号")]
public string Code { get; set; }
[Column("timepoint")]
[Required]
[Description("时间")]
public DateTime TimePoint { get; set; }
[Column("datatype")]
[Required]
[Description("0-实况原始、1-实况审核、2-标况原始、3-标况审核")]
public int DataType { get; set; }
[Column("so2")]
[Description("SO2(二氧化硫)")]
public int? SO2 { get; set; }
[Column("no2")]
[Description("NO2(二氧化氮)")]
public int? NO2 { get; set; }
[Column("pm10")]
[Description("PM10(细颗粒物)")]
public int? PM10 { get; set; }
[Column("co")]
[FreeSql.DataAnnotations.Column(Name = "co", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
[Description("CO(一氧化碳)")]
public decimal? CO { get; set; }
[Column("o3_8h")]
[Description("O3_8H(臭氧滑动8小时)")]
public int? O3_8H { get; set; }
[Column("o3")]
[Description("O3(臭氧)")]
public int? O3 { get; set; }
[Column("pm2_5")]
[Description("PM2.5(可吸入颗粒物)")]
public int? PM2_5 { get; set; }
[Column("no")]
[Description("NO")]
public int? NO { get; set; }
[Column("nox")]
[Description("NOx")]
public int? NOx { get; set; }
[Column("windspeed")]
[FreeSql.DataAnnotations.Column(Name = "windspeed", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
[Description("风速")]
public decimal? WindSpeed { get; set; }
[Column("winddirect")]
[FreeSql.DataAnnotations.Column(Name = "winddirect", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
[Description("风向")]
public decimal? WindDirect { get; set; }
[Column("pressure")]
[FreeSql.DataAnnotations.Column(Name = "pressure", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
[Description("气压")]
public decimal? Pressure { get; set; }
[Column("temperature")]
[FreeSql.DataAnnotations.Column(Name = "temperature", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
[Description("气温/温度")]
public decimal? Temperature { get; set; }
[Column("humidity")]
[FreeSql.DataAnnotations.Column(Name = "humidity", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
[Description("湿度")]
public decimal? Humidity { get; set; }
[Column("rainfall")]
[FreeSql.DataAnnotations.Column(Name = "rainfall", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
[Description("降水量")]
public decimal? RainFall { get; set; }
[Column("visibility")]
[FreeSql.DataAnnotations.Column(Name = "visibility", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
[Description("能见度")]
public decimal? Visibility { get; set; }
[Column("precipitation")]
[FreeSql.DataAnnotations.Column(Name = "precipitation", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
public decimal? Precipitation { get; set; }
[Column("pm1")]
[DefaultValue(AirCityProduct.Consts.AirCityConst.InvalidValueOptions.INT)]
public int? PM1 { get; set; }
[Column("co2")]
[FreeSql.DataAnnotations.Column(Name = "co2", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
public decimal? CO2 { get; set; }
[Column("ch4")]
[FreeSql.DataAnnotations.Column(Name = "ch4", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
public decimal? CH4 { get; set; }
[Column("thc")]
[FreeSql.DataAnnotations.Column(Name = "thc", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
public decimal? THC { get; set; }
[Column("nmhc")]
[FreeSql.DataAnnotations.Column(Name = "nmhc", DbType = "decimal(10,3)")]
[DecimalPrecision(10, 3)]
public decimal? NMHC { get; set; }
[Column("so2_mark")]
[Required]
[MaxLength(20)]
public string SO2_Mark { get; set; }
[Column("no2_mark")]
[Required]
[MaxLength(20)]
public string NO2_Mark { get; set; }
[Column("pm10_mark")]
[Required]
[MaxLength(20)]
public string PM10_Mark { get; set; }
[Column("co_mark")]
[Required]
[MaxLength(20)]
public string CO_Mark { get; set; }
[Column("o3_8h_mark")]
[Required]
[MaxLength(20)]
public string O3_8H_Mark { get; set; }
[Column("o3_mark")]
[Required]
[MaxLength(20)]
public string O3_Mark { get; set; }
[Column("pm2_5_mark")]
[Required]
[MaxLength(20)]
public string PM2_5_Mark { get; set; }
[Column("no_mark")]
[Required]
[MaxLength(20)]
public string NO_Mark { get; set; }
[Column("nox_mark")]
[Required]
[MaxLength(20)]
public string NOx_Mark { get; set; }
[Column("windspeed_mark")]
[Required]
[MaxLength(20)]
public string WindSpeed_Mark { get; set; }
[Column("winddirect_mark")]
[Required]
[MaxLength(20)]
public string WindDirect_Mark { get; set; }
[Column("pressure_mark")]
[Required]
[MaxLength(20)]
public string Pressure_Mark { get; set; }
[Column("temperature_mark")]
[Required]
[MaxLength(20)]
public string Temperature_Mark { get; set; }
[Column("humidity_mark")]
[Required]
[MaxLength(20)]
public string Humidity_Mark { get; set; }
[Column("rainfall_mark")]
[Required]
[MaxLength(20)]
public string RainFall_Mark { get; set; }
[Column("visibility_mark")]
[Required]
[MaxLength(20)]
public string Visibility_Mark { get; set; }
[Column("precipitation_mark")]
[Required]
[MaxLength(20)]
public string Precipitation_Mark { get; set; }
[Column("pm1_mark")]
[Required]
[MaxLength(20)]
public string PM1_Mark { get; set; }
[Column("co2_mark")]
[Required]
[MaxLength(20)]
public string CO2_Mark { get; set; }
[Column("ch4_mark")]
[Required]
[MaxLength(20)]
public string CH4_Mark { get; set; }
[Column("thc_mark")]
[Required]
[MaxLength(20)]
public string THC_Mark { get; set; }
[Column("nmhc_mark")]
[Required]
[MaxLength(20)]
public string NMHC_Mark { get; set; }
[Column("so2_iaqi")]
public int? SO2_IAQI { get; set; }
[Column("no2_iaqi")]
public int? NO2_IAQI { get; set; }
[Column("pm10_iaqi")]
public int? PM10_IAQI { get; set; }
[Column("co_iaqi")]
public int? CO_IAQI { get; set; }
[Column("o3_8h_iaqi")]
public int? O3_8H_IAQI { get; set; }
[Column("pm2_5_iaqi")]
public int? PM2_5_IAQI { get; set; }
[Column("aqi")]
public int? AQI { get; set; }
[Column("qualitytype")]
[Required]
[MaxLength(50)]
[Description("优、良、轻度污染、中度污染、重度污染、严重污染")]
public string QualityType { get; set; }
[Column("primarypollutant")]
[Required]
[MaxLength(100)]
public string PrimaryPollutant { get; set; }
[Column("createtime")]
[Required]
[Description("入库时间")]
public DateTime CreateTime { get; set; }
[Column("modifytime")]
[Required]
[Description("修改时间")]
public DateTime ModifyTime { get; set; }
}
public class GetDATStationDayDto : GetDATStationBaseDto
{
/// <summary>
/// 沙尘类型
/// </summary>
[Required]
public SandType SandType { get; set; }
}
public class GetDATStationBaseDto
{
[CanBeNull]
public ICollection<string> Codes { get; set; }
[Required]
public IList<DateTime> TimePoint { get; set; }
[Required]
public AirDetailVerityState DataType { get; set; }
}
[HttpPost]
[Route("GetReportForRangeListAsync")]
public async Task<IList<ReportDataDto>> GetReportForRangeListAsync(ReportDataInput input)
{
var stationData = await _airCityProductBaseApplicationService.GetAllEnabledBSDStationAsync();
var regionData = await _airCityProductBaseApplicationService.GetBSDRegionAsync();
if (input.StationCode == null || !input.StationCode.Any())
{
if (input.AreaType == AreaType.Station)
input.StationCode = stationData.Select(s => s.StationCode).ToList();
else if (input.AreaType == AreaType.Area)
input.StationCode = regionData.Where(o => o.Level == 3).Select(s => s.AreaCode.ToString()).ToList();
else if (input.AreaType == AreaType.City)
input.StationCode = regionData.Where(o => o.Level == 2).Select(s => s.AreaCode.ToString()).ToList();
}
var startTime = new DateTime();
var endTime = new DateTime();
if (input.TimeType == ReportTimeType.AnyRange || input.TimeType == ReportTimeType.Day)
{
startTime = input.TimePoint[0].Date;
endTime = input.TimePoint[1].Date;
}
else if (input.TimeType == ReportTimeType.Month)
{
startTime = DateTimeHelper.GetMonthFirstDay(input.TimePoint[0]);
endTime = DateTimeHelper.GetMonthLastDay(input.TimePoint[1]);
}
else if (input.TimeType == ReportTimeType.Year)
{
startTime = DateTimeHelper.GetYearFirstDays(input.TimePoint[0]);
endTime = DateTimeHelper.GetYearLastDays(input.TimePoint[1]);
}
else if (input.TimeType == ReportTimeType.Quarter)
{
var thisyear = input.TimePoint[0];
CommonHelper.GetQuarter(input, ref startTime, ref endTime, thisyear);
}
input.StartTime = startTime;
input.EndTime = endTime;
var dayDatas = await GetDayDatas(input);
var param = new ReportParam
{
StartTime = startTime,
EndTime = endTime,
Code = input.StationCode,
AreaType = input.AreaType,
ReportTimeType = input.TimeType,
HasDemanCount = input.IsCheckValid,
AQICalculator = _iaqiCalculator,
CompositeIndexCalculator = _iCompositeIndexCalculator,
AverageCalculator = _iaverageCalculator,
PollutantAQILevelCalculator = _ipollutantAQILevelCalculator,
BSDStationList = stationData,
BSDRegionList = regionData
};
var result = ReportHelper.GetReportForRangeDatas(dayDatas, param);
var validData = result.Where(x => UtilHelper.IsValid(x.CompositeIndex)).ToList();
if (validData.Any())
{
var invalidData = result.Except(validData).ToList();
List<decimal> indexs = validData.Select(p => p.CompositeIndex.ConvertToDecimal()).ToList();
validData.ForEach(p =>
{
p.Rank = ReportHelper.CalItemRank(indexs, p.CompositeIndex.ConvertToDecimal()).ConverTo<string>();
});
int currRank = validData.Max(o => o.Rank.ConverTo<int>()) + 1;
invalidData.ForEach(p =>
{
p.Rank = currRank.ToString();
});
var tempValidData = validData.OrderBy(o => o.Rank.ConverTo<int>()).ToList();
tempValidData.AddRange(invalidData);
result = tempValidData;
}
else
{
result.ForEach(p => { p.Rank = "1"; });
}
return result;
}
public class ReportDataInput : PagedResultRequestDto
{
/// <summary>
/// 时间范围(通用)
/// </summary>
public DateTime[] TimePoint { get; set; }
/// <summary>
/// 对比时间
/// </summary>
public DateTime[] ContrastTime { get; set; }
/// <summary>
/// 季度
/// </summary>
public int Quarter { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public DateTime StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public DateTime EndTime { get; set; }
/// <summary>
/// 站点、区县、城市编码
/// </summary>
public List<string> StationCode { get; set; }
/// <summary>
/// 污染物编号
/// </summary>
public List<string> PollutantCode { get; set; }
/// <summary>
/// 数据源
/// </summary>
public AirDetailVerityState DataSource { get; set; }
/// <summary>
/// 报表类型
/// </summary>
public ReportTimeType TimeType { get; set; }
/// <summary>
/// 报表区域类型
/// </summary>
public AreaType AreaType { get; set; }
/// <summary>
/// 排名类型
/// </summary>
public ReportRankType ReportRankType { get; set; }
/// <summary>
/// 剔除沙尘
/// </summary>
public SandType SandType { get; set; }
/// <summary>
/// 是否包含省控数据
/// </summary>
public bool IsMix { get; set; }
/// <summary>
/// 是否有效天数
/// </summary>
public bool IsCheckValid { get; set; }
/// <summary>
/// 计算类型
/// </summary>
public int CalAreaType { get; set; }
/// <summary>
/// 编码类型,指定StationCode类型
/// </summary>
public CodeType CodeType { get; set; }
}
/// <summary>
/// 城市、区县、站点综合报表模型
/// </summary>
public class ReportDataDto
{
//城市
public string CityCode { get; set; }
public string CityName { get; set; }
//区县
public string DistrictCode { get; set; }
public string DistrictName { get; set; }
//站点
public string UniqueCode { get; set; }
public string StationCode { get; set; }
public string StationName { get; set; }
public string TimePoint { get; set; }
//六项污染物
public string SO2 { get; set; }
public string NO2 { get; set; }
public string NO { get; set; }
public string NOx { get; set; }
public string PM2_5 { get; set; }
public string PM10 { get; set; }
public string CO { get; set; }
public string O3 { get; set; }
public string O3_8h { get; set; }
public string AQI { get; set; }
public string PrimaryPollutant { get; set; }
//六项首要污染物天数
public string SO2_PrimaryPollutantDays { get; set; }
public string NO2_PrimaryPollutantDays { get; set; }
public string PM2_5_PrimaryPollutantDays { get; set; }
public string PM10_PrimaryPollutantDays { get; set; }
public string CO_PrimaryPollutantDays { get; set; }
public string O3_8h_PrimaryPollutantDays { get; set; }
//六项首要污染物占比天数
public string SO2_PrimaryPollutantRate { get; set; }
public string NO2_PrimaryPollutantRate { get; set; }
public string PM2_5_PrimaryPollutantRate { get; set; }
public string PM10_PrimaryPollutantRate { get; set; }
public string CO_PrimaryPollutantRate { get; set; }
public string O3_8h_PrimaryPollutantRate { get; set; }
//六项单项指数
public string SO2_SingleIndex { get; set; }
public string NO2_SingleIndex { get; set; }
public string PM2_5_SingleIndex { get; set; }
public string PM10_SingleIndex { get; set; }
public string CO_SingleIndex { get; set; }
public string O3_8h_SingleIndex { get; set; }
//六项IAQI
public string SO2_IAQI { get; set; }
public string NO2_IAQI { get; set; }
public string PM2_5_IAQI { get; set; }
public string PM10_IAQI { get; set; }
public string CO_IAQI { get; set; }
public string O3_8h_IAQI { get; set; }
//一级天数
public string OneLevel { get; set; }
//二级天数
public string TwoLevel { get; set; }
//超标天数
public string OverDays { get; set; }
/// <summary>
/// 超标率
/// </summary>
public string OverRate { get; set; }
//优良天数
public string FineDays { get; set; }
//优良率
public string FineRate { get; set; }
//重污染天数
public string SeriousDays { get; set; }
//重污染率
public string SeriousRate { get; set; }
//综合指数
public string CompositeIndex { get; set; }
/// <summary>
/// 最大质量指数
/// </summary>
public string MaxIndex { get; set; }
/// <summary>
/// 等级
/// </summary>
public string QualityType { get; set; }
/// <summary>
/// 排名
/// </summary>
public string Rank { get; set; }
}
[HttpGet]
[Route("GetReportData")]
public ApiResponse GetReportData( int ReportTimeType, string ParentId = null, int? Level = null,
int? StationTypeId = null, string StationId = null, DateTime? sdtDate = null, DateTime? edtDate = null)
{
try
{
// 参数验证
if (!sdtDate.HasValue || !edtDate.HasValue)
{
return new ApiResponse { Result = false, Message = "开始时间和结束时间不能为空" };
}
//默认上一个小时
if (sdtDate.HasValue)
{
sdtDate = DateTime.Today.AddHours(DateTime.Now.Hour).AddHours(-1);
}
if (edtDate.HasValue)
{
edtDate = DateTime.Today.AddHours(DateTime.Now.Hour).AddHours(-1);
}
if (ReportTimeType!=0)
{
switch ( ReportTimeType)
{
case (int)ReportType.Second:
case (int)ReportType.Minute:
case (int)ReportType.Minute5:
case (int)ReportType.AnyRange:
case (int)ReportType.Hour:
break;
case (int)ReportType.Day:
break;
case (int)ReportType.Week:
case (int)ReportType.Month:
case (int)ReportType.Quarter:
case (int)ReportType.Year:
break;
default:
break;
}
}
// 1. 获取原始数据(实际项目中替换为数据库查询)
List<ReportDataItem> reportData = FetchReportDataFromSource(
ReportTimeType,
ParentId,
Level,
StationTypeId,
StationId,
sdtDate.Value,
edtDate.Value
);
// 2. 序列化为JSON字符串Converter
string jsonData = JsonConvert.SerializeObject(reportData);
return new ApiResponse
{
Result = true,
Data = jsonData,
Message = ""
};
}
catch (Exception ex)
{
return new ApiResponse
{
Result = false,
Data = null,
Message = $"获取数据失败: {ex.Message}"
};
}
}
// 模拟数据获取方法(实际项目需替换为真实数据源)
private List<ReportDataItem> FetchReportDataFromSource( int reportTimeType, string parentId,
int? level, int? stationTypeId, string stationId, DateTime sdtDate, DateTime edtDate)
{
// 这里返回模拟数据,实际应从数据库获取
return new List<ReportDataItem>
{
new ReportDataItem
{
StationId = "1DAFC008-BA10-4839-BF3D-54F0B201D66B",
StationName = "上高县工业园",
Level = 4,
StationTypeId = "6",
Latitude = "28.25888889",
Longitude = "114.9552778",
TimePoint = new DateTime(2020, 9, 26, 10, 0, 0).ToString(),
PM2_5 = "11",
PM2_5_Level = 1,
PM2_5_IAQI = "16",
PM10 = "55",
PM10_Level = 2,
PM10_IAQI = "53",
SO2 = "3",
SO2_Level = 1,
SO2_IAQI = "1",
NO2 = "14",
NO2_Level = 1,
NO2_IAQI = "7",
CO = "0.6",
CO_Level = 1,
CO_IAQI = "6",
O3 = "46",
O3_Level = 1,
O3_IAQI = "15",
AirPress = "100.8",
AirTemperature = "19.9",
RelHumidity = "94",
WindDirection = "75.5",
WindSpeed = "0.8",
AQI = "53",
LevelText = "良",
AQI_Level = 2,
PrimaryPollutant = "PM10"
}
};
}
分钟用这个:
[HttpPost]
[Route(nameof(GetAir5MinTransitionListAsync))]
public async Task<List<AirDataTransitionDto>> GetAir5MinTransitionListAsync(GetAirDataBaseDto input)
{
Check.NotNullOrEmpty(input.StationCodes, nameof(input.StationCodes));
var queryResult = await GetAir5MinListAsync(input);
var dtoList = Translate(queryResult);
return dtoList.ToList();
}
public class GetAirDataBaseDto
{
[Required]
public ICollection<string> StationCodes { get; set; }
[CanBeNull]
public ICollection<string> PollutantCodes { get; set; }
[Required]
public IList<DateTime> TimePoint { get; set; }
[Required]
public AirDetailVerityState DataType { get; set; }
}
public class AirDataTransitionDto
{
/// <summary>
/// 城市编号
/// </summary>
public string CityCode { get; set; }
/// <summary>
/// 城市名称
/// </summary>
public string CityName { get; set; }
/// <summary>
/// 区县编号
/// </summary>
public string DistrictCode { get; set; }
/// <summary>
/// 区县名称
/// </summary>
public string DistrictName { get; set; }
/// <summary>
/// 站点唯一编号
/// </summary>
public string UniqueCode { get; set; }
/// <summary>
/// 站点编码
/// </summary>
public string StationCode { get; set; }
/// <summary>
/// 站点名称
/// </summary>
public string StationName { get; set; }
/// <summary>
/// 时间
/// </summary>
public DateTime TimePoint { get; set; }
/// <summary>
/// 二氧化硫
/// </summary>
public decimal SO2 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 二氧化氮
/// </summary>
public decimal NO2 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 臭氧
/// </summary>
public decimal O3 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 一氧化碳
/// </summary>
public decimal CO { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 颗粒物PM10
/// </summary>
public decimal PM10 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 细颗粒物PM2.5
/// </summary>
public decimal PM2_5 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 一氧化氮
/// </summary>
public decimal NO { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 氮氧化物
/// </summary>
public decimal NOx { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 二氧化硫标识
/// </summary>
public string SO2_Mark { get; set; } = string.Empty;
/// <summary>
/// 二氧化氮标识
/// </summary>
public string NO2_Mark { get; set; } = string.Empty;
/// <summary>
/// O3标识
/// </summary>
public string O3_Mark { get; set; } = string.Empty;
/// <summary>
/// 一氧化碳标识
/// </summary>
public string CO_Mark { get; set; } = string.Empty;
/// <summary>
/// 颗粒物PM10标识
/// </summary>
public string PM10_Mark { get; set; } = string.Empty;
/// <summary>
/// 细颗粒物PM2.5标识
/// </summary>
public string PM2_5_Mark { get; set; } = string.Empty;
/// <summary>
/// 一氧化氮标识
/// </summary>
public string NO_Mark { get; set; } = string.Empty;
/// <summary>
/// 氮氧化物标识
/// </summary>
public string NOx_Mark { get; set; } = string.Empty;
/// <summary>
/// 风速(m/s)
/// </summary>
public decimal WindSpeed { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 风向(°)
/// </summary>
public decimal WindDirect { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 气压(hPa)
/// </summary>
public decimal Pressure { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 气温(℃)
/// </summary>
public decimal Temperature { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 湿度(%)
/// </summary>
public decimal Humidity { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
/// <summary>
/// 降水量(mm)
/// </summary>
public decimal RainFall { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
public string WindSpeed_Mark { get; set; } = string.Empty;
public string WindDirect_Mark { get; set; } = string.Empty;
public string Pressure_Mark { get; set; } = string.Empty;
public string Temperature_Mark { get; set; } = string.Empty;
public string Humidity_Mark { get; set; } = string.Empty;
public string RainFall_Mark { get; set; } = string.Empty;
public decimal CO2 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
public string CO2_Mark { get; set; } = string.Empty;
public decimal CH4 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
public string CH4_Mark { get; set; } = string.Empty;
public decimal THC { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
public string THC_Mark { get; set; } = string.Empty;
public decimal NMHC { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
public string NMHC_Mark { get; set; } = string.Empty;
public decimal PM2_5_2 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
public decimal PM10_2 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
public decimal PM10_3 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
public decimal PM10_4 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
public decimal PM10_5 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
public decimal PM10_6 { get; set; } = AirCityConst.InvalidValueOptions.DECIMAL;
public string PM2_5_2_Mark { get; set; } = string.Empty;
public string PM10_2_Mark { get; set; } = string.Empty;
public string PM10_3_Mark { get; set; } = string.Empty;
public string PM10_4_Mark { get; set; } = string.Empty;
public string PM10_5_Mark { get; set; } = string.Empty;
public string PM10_6_Mark { get; set; } = string.Empty;
}
public class GetAirDataBaseDto
{
[Required]
public ICollection<string> StationCodes { get; set; }
[CanBeNull]
public ICollection<string> PollutantCodes { get; set; }
[Required]
public IList<DateTime> TimePoint { get; set; }
[Required]
public AirDetailVerityState DataType { get; set; }
}
[HttpPost]
[Route(nameof(GetAir5MinListAsync))]
public async Task<List<AirDataBaseDto>> GetAir5MinListAsync(GetAirDataBaseDto input)
{
Check.NotNullOrEmpty(input.StationCodes, nameof(input.StationCodes));
Check.NotNullOrEmpty(input.TimePoint, nameof(input.TimePoint));
var startTime = DateTime.Now;
var endTime = DateTime.Now;
if (input.TimePoint.Count == 1)
{
startTime = input.TimePoint[0];
endTime = startTime;
}
else
{
startTime = input.TimePoint[0];
endTime = input.TimePoint[1];
}
System.Linq.Expressions.Expression<Func<Air5MinData, bool>> expreesion = d => d.TimePoint >= startTime && d.TimePoint <= endTime;
expreesion = expreesion.And(x => x.DataType == input.DataType.ToString());
expreesion = expreesion.And(x => input.StationCodes.Contains(x.StationCode));
if (!input.PollutantCodes.IsNullOrEmpty())
{
expreesion = expreesion.And(d => input.PollutantCodes.Contains(d.PollutantCode));
}
var queryResult = await _air5MinDataRepository.GetListAsync(expreesion, new AirDataExtensionExpression() { });
var dtoList = ObjectMapper.Map<IList<Air5MinData>, List<AirDataBaseDto>>(queryResult);
var stations = await _airCityProductBaseApplicationService.GetRoleEnabledStationAsync();
dtoList.ForEach(item =>
{
item.SetStationExtendedProperties(stations);
});
return dtoList.OrderBy(x => x.TimePoint).ToList();
}
小时:
private async Task<DATStationHourModelDto> GetDATStationHourPaged(GetDATStationHourPagedListDto input)
{
long totalCount;
var expreesion = GetExpressionByConditions(ObjectMapper.Map<GetDATStationHourPagedListDto, GetDATStationHourDto>(input));
var queryResult = _stationDataRepository.GetListPaged(expreesion, new StationDataExtensionExpression() { }, input.SkipCount,input.MaxResultCount, out totalCount);
var dtoList = ObjectMapper.Map<IList<StationDataDO>, List<DATStationHourDto>>(queryResult);
var stations = await _airCityProductBaseApplicationService.GetAllEnabledBSDStationAsync();
dtoList.ForEach(item =>
{
item.SetStationExtendedProperties(stations);
});
return new DATStationHourModelDto { dtoList = dtoList.OrderBy(d => d.TimePoint).ToList(), totalCount =(Int32) totalCount };
}
请帮我写完获取报表接口 GetReportData
根据不同时间类型 分情况返回数据
报表时间类型:分钟=10; 小时 =3;天=4;月=6;年=8
最新发布