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 #2
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));
        }