/// <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));
        }
Example #3
0
        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());
            }
        }