/// <summary> /// 获取指标详情总条数 /// </summary> /// <param name="userId"></param> /// <param name="requestDto"></param> /// <returns></returns> public async Task <int> GetHealthIndicatorDetailCount(string userId, GetHealthIndicatorDetailRequestDto requestDto) { using (var conn = MySqlHelper.GetConnection()) { var sql = $@"SELECT count(1) FROM t_consumer_indicator a WHERE a.user_guid =@userId AND a.indicator_guid =@IndicatorGuid AND a.`enable` = 1 " ; var count = await conn.QueryFirstOrDefaultAsync <int>(sql, new { userId, requestDto.IndicatorGuid }); return(count); } }
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)); }
/// <summary> /// 获取指标选项详情 /// </summary> /// <param name="indicatorGuid">健康指标id</param> /// <returns></returns> public async Task <List <GetHealthIndicatorOptionDetailResponseDto> > GetHealthIndicatorDetailList(GetHealthIndicatorDetailRequestDto requestDto) { if (requestDto.PageIndex < 1) { requestDto.PageIndex = 1; } if (requestDto.PageSize < 1) { requestDto.PageSize = 5; } requestDto.PageIndex = (requestDto.PageIndex - 1) * requestDto.PageSize; using (var conn = MySqlHelper.GetConnection()) { var sql = $@" SELECT c.creation_date, b.indicator_value, b.indicator_option_guid, f.option_name, f.option_unit, f.min_value, f.max_value FROM ( SELECT DISTINCT a.creation_date, a.indicator_record_guid FROM t_consumer_indicator a WHERE a.user_guid = @UserGuid AND a.indicator_guid = @IndicatorGuid AND a.`enable` = 1 ORDER BY a.creation_date DESC LIMIT @PageIndex, @PageSize ) c LEFT JOIN t_consumer_indicator_detail b on c.indicator_record_guid=b.indicator_record_guid and b.`enable`=1 left join t_health_indicator_option f on b.indicator_option_guid=f.option_guid ORDER BY c.creation_date DESC" ; return((await conn.QueryAsync <GetHealthIndicatorOptionDetailResponseDto>(sql, new { requestDto.UserGuid, requestDto.IndicatorGuid, requestDto.PageIndex, requestDto.PageSize })).ToList()); } }