public async Task <IActionResult> GetHealthIndicatorDetailAsync(GetHealthIndicatorDetailRequestDto requestDto) { GetHealthIndicatorRecordResponseDto resultResponse = new GetHealthIndicatorRecordResponseDto(); string userId = string.Empty; if (string.IsNullOrWhiteSpace(requestDto.UserId)) { userId = UserID; } else { userId = requestDto.UserId; } resultResponse.TotalCount = await new HealthIndicatorBiz().GetHealthIndicatorDetailCount(userId, requestDto); var result = await new HealthIndicatorBiz().GetHealthIndicatorDetailList(userId, requestDto); resultResponse.DateList = result.GroupBy(a => a.CreationDate).Select(s => s.Key).OrderBy(s => s).ToList(); var resultGroup = result.GroupBy(a => new { a.IndicatorOptionGuid }).Select(a => new GetHealthIndicatorDetailResponseDto { OptionGuid = a.Key.IndicatorOptionGuid, OptionName = a.FirstOrDefault().OptionName, OptionUnit = a.FirstOrDefault().OptionUnit, MaxValue = a.FirstOrDefault()?.MaxValue, MinValue = a.FirstOrDefault()?.MinValue, OptionList = a.ToList().Select(s => new KeyValuePair <DateTime, decimal?>(s.CreationDate, s.IndicatorValue)).OrderBy(s => s.Key).ToList() }).ToList(); //查询个人用户的范围值 var indicatorList = await new IndicatorWarningLimitBiz().GetModelAsyncByUser(userId); if (indicatorList != null && indicatorList.Count > 0) { foreach (var item in resultGroup) { var indicatorModel = indicatorList.FirstOrDefault(s => s.IndicatorOptionGuid == item.OptionGuid); if (indicatorModel != null) { item.MaxValue = indicatorModel.MaxValue; item.MinValue = indicatorModel.MinValue; } } } resultResponse.DetailList = resultGroup; return(Success(resultResponse)); }
public async Task <IActionResult> GetHealthIndicatorDetails([FromQuery] GetHealthIndicatorDetailRequestDto requestDto) { var resultResponse = new GetHealthIndicatorRecordResponseDto(); var result = await new HealthIndicatorBiz().GetHealthIndicatorDetailList(requestDto); if (result is null || result.Count <= 0) { return(Success(resultResponse)); } resultResponse.DateList = result.Select(a => a.CreationDate) .Distinct().OrderBy(a => a).ToList(); var resultGroup = result.GroupBy(o => o.IndicatorOptionGuid).Select(d => new GetHealthIndicatorDetailResponseDto { OptionGuid = d.Key, OptionName = d.FirstOrDefault().OptionName, OptionUnit = d.FirstOrDefault().OptionUnit, MinValue = d.FirstOrDefault().MinValue, MaxValue = d.FirstOrDefault().MaxValue, OptionList = d.ToList().Select(s => new KeyValuePair <DateTime, decimal?>(s.CreationDate, s.IndicatorValue)).OrderBy(a => a.Key).ToList() }).ToList(); //查询个人用户的范围值 var indicatorList = await new IndicatorWarningLimitBiz().GetModelAsyncByUser(requestDto.UserGuid); if (indicatorList != null && indicatorList.Count > 0) { foreach (var item in resultGroup) { var indicatorModel = indicatorList.FirstOrDefault(s => s.IndicatorOptionGuid == item.OptionGuid); if (indicatorModel != null) { item.MaxValue = indicatorModel.MaxValue; item.MinValue = indicatorModel.MinValue; } } } resultResponse.TotalCount = await new HealthIndicatorBiz().GetHealthIndicatorDetailCount(requestDto.UserGuid, requestDto); resultResponse.DetailList = resultGroup; return(Success(resultResponse)); }