Пример #1
0
        public async Task <IActionResult> GetDoctorAnswerAndConsultListAsync(GetHospitalDoctorAnswerAndConsultPageListRequestDto requestDto)
        {
            requestDto.HospitalGuid = UserID;

            var hospitalBiz = new HospitalManagerBiz();

            var response = await hospitalBiz.GetDoctorAnswerAndConsultListAsync(requestDto);

            return(Success(response));
        }
Пример #2
0
        /// <summary>
        /// 用户出席通知
        /// </summary>
        /// <param name="client"></param>
        /// <param name="presence"></param>
        private static void Client_OnPresence(Client client, XmppPresence presence)
        {
            Settings settings            = Factory.GetSettings("host.json");
            var      doctorPresentSwitch = settings["DoctorPresentSwitch"];

            if (bool.TryParse(doctorPresentSwitch, out bool doctorPresentSwitchRes))
            {
                if (!doctorPresentSwitchRes)
                {
                    return;
                }
            }
            var userGuid = presence.Sender;
            var isOnline = presence.Online;

            Logger.Debug($"用户出席通知{userGuid}({presence.Resource})-{isOnline.ToString()}");

            #region 检测出席用户是否是医生
            var checkDoctorList = RedisHelper.Get <string>("CloudDoctor:DoctorList");
            if (checkDoctorList != null)
            {
                var doctorGuids = JsonConvert.DeserializeObject <List <string> >(checkDoctorList);
                if (!doctorGuids.Contains(userGuid))
                {
                    return;
                }
            }
            #endregion

            new UserPresenceBiz().SetPresenceStatus(userGuid, isOnline);

            var result = new UserPresenceBiz().GetPresenceStatus(userGuid);
            if (!result.IsOnline && result.LatestOnlineTime != null)
            {
                var model = new OnLineModel()
                {
                    OnlineGuid    = Guid.NewGuid().ToString("N"),
                    DoctorGuid    = userGuid,
                    LoginTime     = result.LatestOnlineTime.Value,
                    LogoutTime    = DateTime.Now,
                    CreatedBy     = userGuid,
                    LastUpdatedBy = userGuid,
                    OrgGuid       = ""
                };

                model.Duration = (decimal)Math.Round((model.LogoutTime - model.LoginTime).TotalMinutes, 2);

                var onlineResult = new HospitalManagerBiz().CreateDoctorOnlineRecord(model);
                if (string.IsNullOrEmpty(onlineResult))
                {
                    Logger.Warn($"添加医生“{userGuid}”在线时长记录失败");
                }
            }
        }
Пример #3
0
        public async Task <IActionResult> GetHospitalCurrentDoctorOnlineStatistic()
        {
            var hospitalBiz = new HospitalManagerBiz();

            var numbers = await hospitalBiz.GetHospitalDoctorOnlineNumber(UserID);

            var response = new GetHospitaCurrentlOnlineDoctorResponseDto
            {
                Online  = numbers[0],
                Consult = numbers[2]
            };

            if (numbers[1] > 0)
            {
                response.OnlineRatio = Math.Round((decimal)response.Online / numbers[1], 4) * 100;
            }

            return(Success(response));
        }
Пример #4
0
        public async Task <IActionResult> GetHospitalDoctorConsultRank([FromQuery]
                                                                       GetHospitaHistoricalDoctorRequestDto requestDto)
        {
            if (requestDto.Type < 0 || requestDto.Type > 2)
            {
                return(Failed(ErrorCode.Empty, "请求参数不正确"));
            }

            if (requestDto.Type == 2)
            {
                if (!requestDto.BeginDate.HasValue || !requestDto.EndDate.HasValue)
                {
                    return(Success(ErrorCode.Empty, "开始日期或结束日期为空"));
                }
            }

            requestDto.HospitalGuid = UserID;

            var hospitalBiz = new HospitalManagerBiz();

            var response = await hospitalBiz.GetHospitalDoctorConsultRank(requestDto);

            return(Success(response));
        }