| | |
| | | /// <returns></returns> |
| | | public async Task<Page<Dictionary<string, object>>> GetPages(VmParamTableProductionSalesPageSearch param) |
| | | { |
| | | var cms = param.Main.ToIConditionalModels(); |
| | | var cms = param.ColCondition.ToIConditionalModels(); |
| | | var page = await Context.Queryable<TableProductionSalesName>() |
| | | .Where(cms) |
| | | .OrderBy(a=>a.UpdateTime,OrderByType.Desc) |
| | | .ToPageAsync(param.PageIndex, param.PageSize); |
| | | |
| | | var dbDataRange = await Context.Queryable<TableProductionSalesValue>() |
| | | .Where(a => page.Items.Select(p => p.Id).Contains(a.NameId)) |
| | | .Select(a => new |
| | | { |
| | | Min = SqlFunc.AggregateMin(Convert.ToDateTime(SqlFunc.MergeString(a.Year.ToString(), "/", a.Month.ToString(), "/1"))), |
| | | Max = SqlFunc.AggregateMax(Convert.ToDateTime(SqlFunc.MergeString(a.Year.ToString(), "/", a.Month.ToString(), "/1"))), |
| | | }) |
| | | .FirstAsync(); |
| | | |
| | | // 符合条件的数据值 |
| | | var valueList = await Context.Queryable<TableProductionSalesValue>() |
| | |
| | | var startDate = param.DateRange.StartTime ?? minDateRange; |
| | | var endDate = param.DateRange.EndTime ?? maxDateRange; |
| | | |
| | | var frequencyItem = param?.Main.Find(a => |
| | | var frequencyItem = param?.ColCondition.Find(a => |
| | | string.Equals(a.FieldName, "Frequency", StringComparison.CurrentCultureIgnoreCase)); |
| | | // 如果条件type是=的话,拿频率值 |
| | | var frequency = frequencyItem?.ConditionalType == ConditionalType.Equal ? frequencyItem.FieldValue : ""; |
| | |
| | | break; |
| | | } |
| | | |
| | | var kvList = new List<Dictionary<string,object>>(); |
| | | var nameProps = typeof(TableProductionSalesName).GetProperties(); |
| | | foreach (var item in page.Items) |
| | | { |
| | | var dict = new Dictionary<string, object>(); |
| | | foreach (var prop in nameProps) |
| | | { |
| | | var value = prop.GetValue(item); |
| | | dict.Add(prop.Name,value); |
| | | } |
| | | kvList.Add(dict); |
| | | } |
| | | // 结果组装 |
| | | var kvList = page.Items.ToJson().ToObject<List<Dictionary<string, object>>>(); |
| | | // 添加每个指标对应时间的值 |
| | | foreach (var dateTime in dateRange) |
| | | { |
| | | var colName = dateTime.ToString("yyyy-MM"); |
| | |
| | | var value = valueList.Find(a => |
| | | a.Year == dateTime.Year && a.Month == dateTime.Month && |
| | | a.NameId.ToString() == kvItem["Id"].ToString())?.Value; |
| | | if (value != null) |
| | | kvItem[colName] = $"{value:N2}"; |
| | | kvItem[colName] = $"{value:N2}"; |
| | | } |
| | | } |
| | | |