示例#1
0
        static void Main(string[] args)
        {
            var service = new MessageQueries();

            int hour   = DateTime.Now.Hour;
            int Minute = DateTime.Now.Minute;

            if (hour == 7 && Minute == 30)
            {
                // 7:30 提醒未进行健康信息情况填报的学生家长 填写体温等健康信息
                service.GetListsXSBeforeToSchoolSend();
                // 7:30 提醒未进行健康信息情况填报的教职员工填写体温等健康信息
                service.GetListsJZGBeforeToSchoolSend();
            }
            else if (hour == 10 && Minute == 0)
            {
                //教职工  10:00 提醒未进行晨检情况填报的 教职工 填写体温等健康信息
                service.GetListsJZGMorningSend();
            }
            else if (hour == 13 && Minute == 30)
            {
                //教职工  13:30 提醒未进行午检情况填报的 教职工 填写体温等健康信息
                service.GetListsJZGNoonSend();
            }
        }
示例#2
0
        public async Task <IEnumerable <MessageObject> > GetMessageObjects(string wellUid, string wellboreUid)
        {
            var start         = DateTime.Now;
            var witsmlMessage = MessageQueries.GetMessageByWellbore(wellUid, wellboreUid);
            var result        = await WitsmlClient.GetFromStoreAsync(witsmlMessage, new OptionsIn(ReturnElements.Requested));

            var messageObjects = result.Messages
                                 .Select(message =>
                                         new MessageObject
            {
                Uid                = message.Uid,
                Name               = message.Name,
                WellboreUid        = message.UidWellbore,
                WellboreName       = message.NameWellbore,
                WellUid            = message.UidWell,
                WellName           = message.NameWell,
                MessageText        = message.MessageText,
                DateTimeLastChange = StringHelpers.ToDateTime(message.CommonData.DTimLastChange),
                DateTimeCreation   = StringHelpers.ToDateTime(message.CommonData.DTimCreation)
            })
                                 .OrderBy(message => message.WellboreName).ToList();
            var elapsed = DateTime.Now.Subtract(start).Milliseconds / 1000.0;

            Log.Debug("Fetched {Count} messageobjects from {WellboreName} in {Elapsed} seconds", messageObjects.Count, messageObjects.FirstOrDefault()?.WellboreName, elapsed);
            return(messageObjects);
        }
示例#3
0
        public override async Task <(WorkerResult, RefreshAction)> Execute(DeleteMessageObjectsJob job)
        {
            Verify(job);

            var wellUid     = job.MessageObjects.First().WellUid;
            var wellboreUid = job.MessageObjects.First().WellboreUid;

            var messagesExpanded = $"[ {string.Join(", ", job.MessageObjects.Select(l => l.Uid))} ]";
            var jobDescription   = $"Delete {job.MessageObjects.Count()} Messages under wellUid: {wellUid}, wellboreUid: {wellboreUid}. Messages: {messagesExpanded}";

            var queries = job.MessageObjects.Select(l => MessageQueries.GetMessageById(l.WellUid, l.WellboreUid, l.Uid));
            var tasks   = queries.Select(q => witsmlClient.DeleteFromStoreAsync(q)).ToList();

            await Task.WhenAll(tasks);

            if (tasks.Any(t => t.IsFaulted))
            {
                var numFailed = tasks.Count(t => !t.Result.IsSuccessful);
                var reasons   = string.Join(",", tasks.Where(t => !t.Result.IsSuccessful).Select(t => t.Result.Reason).ToArray());
                Log.Error($"FAILURE deleting {numFailed} of {tasks.Count} Messages due to {reasons}");
                return(new WorkerResult(witsmlClient.GetServerHostname(), false, $"Job failed deleting {numFailed} messages", reasons), null);
            }

            Log.Information($"SUCCESS - {jobDescription}");
            return(
                new WorkerResult(witsmlClient.GetServerHostname(), true, $"{tasks.Count} messages deleted for wellbore {wellboreUid}"),
                new RefreshMessageObjects(witsmlClient.GetServerHostname(), wellUid, wellboreUid, RefreshType.Update)
                );
        }
示例#4
0
        public async Task <MessageObject> GetMessageObject(string wellUid, string wellboreUid, string msgUid)
        {
            var witsmlMessage = MessageQueries.GetMessageById(wellUid, wellboreUid, msgUid);
            var result        = await WitsmlClient.GetFromStoreAsync(witsmlMessage, new OptionsIn(ReturnElements.All));

            var messageObject = result.Messages.FirstOrDefault();

            if (messageObject == null)
            {
                return(null);
            }

            return(new MessageObject
            {
                WellboreUid = messageObject.UidWellbore,
                WellboreName = messageObject.NameWellbore,
                WellUid = messageObject.UidWell,
                WellName = messageObject.NameWell,
                Uid = messageObject.Uid,
                Name = messageObject.Name,
                MessageText = messageObject.MessageText,
                DateTimeCreation = StringHelpers.ToDateTime(messageObject.CommonData.DTimCreation),
                DateTimeLastChange = StringHelpers.ToDateTime(messageObject.CommonData.DTimLastChange)
            });
        }
        public override async Task <(WorkerResult, RefreshAction)> Execute(ModifyMessageObjectJob job)
        {
            var modifyMessageQuery  = MessageQueries.CreateMessageObject(job.MessageObject);
            var modifyMessageResult = await witsmlClient.UpdateInStoreAsync(modifyMessageQuery);

            if (!modifyMessageResult.IsSuccessful)
            {
                const string errorMessage = "Failed to modify message object";
                Log.Error("{ErrorMessage}. Target: UidWell: {TargetWellUid}, UidWellbore: {TargetWellboreUid}",
                          errorMessage, job.MessageObject.WellUid, job.MessageObject.WellboreUid);
                return(new WorkerResult(witsmlClient.GetServerHostname(), false, errorMessage, modifyMessageResult.Reason), null);
            }

            Log.Information("{JobType} - Job successful. MessageObject modified", GetType().Name);
            var refreshAction = new RefreshMessageObjects(witsmlClient.GetServerHostname(), job.MessageObject.WellUid, job.MessageObject.WellboreUid, RefreshType.Update);
            var workerResult  = new WorkerResult(witsmlClient.GetServerHostname(), true, $"MessageObject {job.MessageObject.Name} updated for {job.MessageObject.WellboreName}");

            return(workerResult, refreshAction);
        }