/// <summary>
        /// 获取会议资源
        /// </summary>
        /// <param name="beginTime">占用资源的开始时间</param>
        /// <param name="endTime">占用资源的结束时间</param>
        public List <View_PRJ_Resource> GetMeetingResource(DateTime beginTime, DateTime endTime)
        {
            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            var varData = from r in ctx.Fun_GetResourceView_1(beginTime, endTime)
                          select r;

            List <View_PRJ_Resource> result = new List <View_PRJ_Resource>();

            foreach (var item in varData)
            {
                View_PRJ_Resource temp = new View_PRJ_Resource();

                temp.是共享类资源 = item.是共享类资源;
                temp.资源编号   = item.资源编号;
                temp.资源空闲   = item.资源空闲;
                temp.资源类别编号 = item.资源类别编号;
                temp.资源类别名称 = item.资源类别名称;
                temp.资源名称   = item.资源名称;

                result.Add(temp);
            }

            return(result);
        }
Example #2
0
        /// <summary>
        /// 设置会议实际完成时间
        /// </summary>
        /// <param name="meetingId">会议编号</param>
        /// <param name="realTime">实际完成时间</param>
        public void SetRealFinishedTime(string meetingId, DateTime realTime)
        {
            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            var result = from r in ctx.PRJ_DailyWork
                         where r.ID == meetingId
                         select r;

            if (result.Count() > 0)
            {
                PRJ_DailyWork meeting = result.Single();

                if (meeting.WorkID == BasicInfo.LoginID)
                {
                    if (realTime.Date != meeting.EndTime.Date || realTime <= meeting.BeginTime)
                    {
                        throw new Exception("设置的完成时间不正确");
                    }

                    if (ServerTime.Time.Date > meeting.EndTime.Date)
                    {
                        throw new Exception("不允许在会议结束一天后再修改会议完成时间");
                    }

                    meeting.EndTime = realTime;
                    ctx.SubmitChanges();
                }
                else
                {
                    throw new Exception("此会议不是您创建的您无权修改");
                }
            }
        }
Example #3
0
        /// <summary>
        /// 获取会议提示信息
        /// </summary>
        /// <returns>获取到的提示信息</returns>
        public string GetMeetingAlarmInfo()
        {
            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            List <string> lstMeetingID = new List <string>();

            var ids = (from r in ctx.PRJ_DailyWorkNotifyPeople
                       where r.WorkID == BasicInfo.LoginID
                       select r.DailyWorkID).Distinct();

            if (ids.Count() > 0)
            {
                lstMeetingID.AddRange(ids.ToArray());
            }

            List <View_PRJ_Meeting> lstMeeting = new List <View_PRJ_Meeting>();

            var result = from r in ctx.View_PRJ_Meeting
                         where ServerTime.Time > r.开始时间.AddMinutes(-r.提醒提前分钟数) && r.记录人工号 == BasicInfo.LoginID || r.主持人工号 == BasicInfo.LoginID && lstMeetingID.Contains(r.会议编号)
                         select r;

            if (result.Count() > 0)
            {
                lstMeeting.AddRange(result.ToArray());
            }

            return(null);
        }
        /// <summary>
        /// 更新指定短信的数据
        /// </summary>
        /// <param name="shortMsgID">短信ID</param>
        /// <param name="shortMsg">更新后的短信内容</param>
        public void Update(string shortMsgID, View_Task_ShortMessage shortMsg)
        {
            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            var result = from r in ctx.Task_ShortMessage
                         where r.ID == shortMsgID
                         select r;

            Task_ShortMessage msg = result.Single();

            msg.Status  = shortMsg.状态;
            msg.Content = shortMsg.短信内容;

            if (GlobalObject.GeneralFunction.IsNullOrEmpty(shortMsg.接收人手机号) || !StapleFunction.IsHandset(shortMsg.接收人手机号))
            {
                throw new Exception(string.Format("不正确的手机号码:{0}", shortMsg.接收人手机号));
            }

            msg.MobileNo       = shortMsg.接收人手机号;
            msg.Receiver       = shortMsg.接收人姓名;
            msg.SendTime       = shortMsg.发送时间;
            msg.Remark         = shortMsg.备注;
            msg.CreateTime     = ServerTime.Time;
            msg.ShortMsgTypeID = GetShortMsgType(shortMsg.短信类别).TypeID;

            ctx.SubmitChanges();
        }
Example #5
0
        /// <summary>
        /// 删除会议提醒信息
        /// </summary>
        /// <param name="ctx">数据库操作上下文</param>
        /// <param name="dailyWork">要删除提醒信息对应的日常事务</param>
        private void DeleteAlarmInfo(TaskManagementDataContext ctx, PRJ_DailyWork dailyWork)
        {
            // 删除任务提醒
            var alarmSetting = from r in ctx.PRJ_TaskAlarmSetting
                               where r.ItemID == dailyWork.ID
                               select r;

            ctx.PRJ_TaskAlarmSetting.DeleteAllOnSubmit(alarmSetting);

            #region 清除报警提示信息

            IWarningNotice warningNoticeServer = PlatformFactory.GetObject <IWarningNotice>();

            Dictionary <string, string> dicParam = new Dictionary <string, string>();

            dicParam.Add("附加信息2", dailyWork.ID);

            List <Flow_WarningNotice> notices = warningNoticeServer.GetWarningNotice(dicParam);

            if (notices != null)
            {
                foreach (var item in notices)
                {
                    warningNoticeServer.DeleteWarningNotice(item.序号);
                }
            }

            #endregion
        }
        /// <summary>
        /// 获取所有的短信类别
        /// </summary>
        /// <returns>返回获取到的短信类别列表</returns>
        public Task_ShortMessageType[] GetShortMsgType()
        {
            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            var result = from r in ctx.Task_ShortMessageType
                         select r;

            return(result.ToArray());
        }
        /// <summary>
        /// 根据短信类别名称获取短信类别信息
        /// </summary>
        /// <param name="typeName">短信类别名称</param>
        /// <returns>返回获取到的短信类别信息</returns>
        private Task_ShortMessageType GetShortMsgType(string typeName)
        {
            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            var result = from r in ctx.Task_ShortMessageType
                         where r.TypeName == typeName
                         select r;

            return(result.Single());
        }
        /// <summary>
        /// 获取短信数据
        /// </summary>
        /// <param name="beginTime">发送短信的开始时间</param>
        /// <param name="endTime">发送短信的结束时间</param>
        public List <View_Task_ShortMessage> GetData(DateTime beginTime, DateTime endTime)
        {
            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            var result = from r in ctx.View_Task_ShortMessage
                         where r.发送时间 >= beginTime && r.发送时间 <= endTime
                         select r;

            return(result.ToList());
        }
Example #9
0
        /// <summary>
        /// 检查会议参与人员是否有时间参加会议
        /// </summary>
        /// <param name="personnels">与会人员工号列表</param>
        /// <param name="beginTime">会议开始时间</param>
        /// <param name="endTime">会议结束时间</param>
        /// <param name="error">错误时输出错误信息</param>
        /// <returns>检查是否通过的标志</returns>
        private bool CheckParticipants(List <string> personnels, DateTime beginTime, DateTime endTime, out string error)
        {
            error = null;

            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("下列人员无法参加会议:");

            // 存在出差人员
            bool hasInTheBusinessTrip = false;
            int  index = 0;

            for (int i = 0; i < personnels.Count; i++)
            {
                if ((bool)ctx.Fun_InTheBusinessTrip(personnels[i], beginTime, endTime))
                {
                    hasInTheBusinessTrip = true;
                    sb.AppendLine(string.Format("{0}. {1} 在 会议期间出差;", ++index, UniversalFunction.GetPersonnelName(personnels[i])));
                }
            }

            var result = (from r in ctx.PRJ_DailyWork
                          join a in ctx.PRJ_DailyWorkNotifyPeople on r.ID equals a.DailyWorkID
                          where r.Status == MeetingStatus.已发.ToString() &&
                          ((beginTime >= r.BeginTime && beginTime <= r.EndTime) ||
                           (endTime >= r.BeginTime && endTime <= r.EndTime))
                          select new { r.BeginTime, r.EndTime, a.WorkID }).ToList();

            result = result.FindAll(f => personnels.Contains(f.WorkID));

            if (result.Count == 0)
            {
                if (hasInTheBusinessTrip)
                {
                    error = sb.ToString();
                    return(false);
                }
                else
                {
                    return(true);
                }
            }

            for (int i = 0; i < result.Count; i++)
            {
                sb.AppendLine(string.Format("{0}. {1} 在 {2} 至 {3} 时间段已经有会议要参加;",
                                            ++index, UniversalFunction.GetPersonnelName(result[i].WorkID), result[i].BeginTime, result[i].EndTime));
            }

            error = sb.ToString();
            return(false);
        }
Example #10
0
        /// <summary>
        /// 删除指定的会议信息
        /// </summary>
        /// <param name="ctx">数据库操作上下文</param>
        /// <param name="meetingID">会议编号</param>
        private void Delete(TaskManagementDataContext ctx, string meetingID)
        {
            var result = from r in ctx.PRJ_DailyWork
                         where r.ID == meetingID
                         select r;

            if (result.Count() == 1)
            {
                // 删除日常事务信息
                PRJ_DailyWork dailyWork = result.Single();

                if (dailyWork.WorkID != BasicInfo.LoginID)
                {
                    throw new Exception("您不是会议的创建者不能进行此操作");
                }

                if (dailyWork.Status == MeetingStatus.已发.ToString() && dailyWork.BeginTime < ServerTime.Time.AddMinutes(20))
                {
                    throw new Exception("您不能删除会议开始时间在当前时间20分钟前的会议,会议信息已经生效");
                }

                ctx.PRJ_DailyWork.DeleteAllOnSubmit(result);

                #region 数据库中会进行级联删除

                //// 删除会议扩展信息
                //var meetingExpandedInfo = from r in ctx.PRJ_MeetingExpandedInfo
                //                          where r.DailyWorkID == meetingID
                //                          select r;

                //ctx.PRJ_MeetingExpandedInfo.DeleteAllOnSubmit(meetingExpandedInfo);

                //// 删除参与人员信息
                //var people = from r in ctx.PRJ_DailyWorkNotifyPeople
                //             where r.DailyWorkID == meetingID
                //             select r;

                //ctx.PRJ_DailyWorkNotifyPeople.DeleteAllOnSubmit(people);

                #endregion

                var rul = from r in ctx.PRJ_ResourceUsageList
                          where r.TaskID == meetingID
                          select r;

                ctx.PRJ_ResourceUsageList.DeleteAllOnSubmit(rul);

                // 删除会议提醒信息
                DeleteAlarmInfo(ctx, dailyWork);

                ctx.SubmitChanges();
            }
        }
        /// <summary>
        /// 添加短信
        /// </summary>
        /// <param name="lstShortMsg">短信列表</param>
        /// <param name="status">短信状态</param>
        public void Add(List <View_Task_ShortMessage> lstShortMsg, ShortMessageStatus status)
        {
            //signing messages
            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            Task_ShortMessage shortMsg = new Task_ShortMessage();

            DateTime date = ServerTime.Time;

            var result = from r in ctx.Task_ShortMessage
                         where r.ID.Substring(3, 4) == date.Year.ToString()
                         select r;

            int maxValue = 1;

            if (result.Count() > 0)
            {
                maxValue += (from r in ctx.Task_ShortMessage
                             where r.ID.Substring(3, 4) == date.Year.ToString()
                             select Convert.ToInt32(r.ID.Substring(9))).Max();
            }

            foreach (var item in lstShortMsg)
            {
                Task_ShortMessage addItem = new Task_ShortMessage();

                // HYX : 短信项
                addItem.ID = string.Format("SMX{0:D4}{1:D2}{2:D5}", date.Year, date.Month, maxValue);

                maxValue++;

                addItem.CreaterID  = BasicInfo.LoginID;
                addItem.CreateTime = date;
                addItem.Receiver   = item.接收人姓名;

                if (GlobalObject.GeneralFunction.IsNullOrEmpty(item.接收人手机号) || !StapleFunction.IsHandset(item.接收人手机号))
                {
                    throw new Exception(string.Format("不正确的手机号码:{0}", item.接收人手机号));
                }

                addItem.MobileNo       = item.接收人手机号;
                addItem.Content        = item.短信内容;
                addItem.SendTime       = item.发送时间;
                addItem.Status         = status.ToString();
                addItem.Remark         = item.备注;
                addItem.ShortMsgTypeID = GetShortMsgType(item.短信类别).TypeID;

                ctx.Task_ShortMessage.InsertOnSubmit(addItem);
            }

            ctx.SubmitChanges();
        }
        /// <summary>
        /// 更新短信列表中所有短信的状态
        /// </summary>
        /// <param name="lstShortMsgID">短信ID列表</param>
        /// <param name="status">更新后的状态</param>
        public void Update(List <string> lstShortMsgID, ShortMessageStatus status)
        {
            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            foreach (var item in lstShortMsgID)
            {
                var result = from r in ctx.Task_ShortMessage
                             where r.ID == item
                             select r;

                result.Single().Status = status.ToString();
            }

            ctx.SubmitChanges();
        }
        /// <summary>
        /// 删除短信
        /// </summary>
        /// <param name="lstShortMsgID">短信ID列表</param>
        public void Delete(List <string> lstShortMsgID)
        {
            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            foreach (var item in lstShortMsgID)
            {
                var result = from r in ctx.Task_ShortMessage
                             where r.ID == item
                             select r;

                ctx.Task_ShortMessage.DeleteAllOnSubmit(result);
            }

            ctx.SubmitChanges();
        }
Example #14
0
        /// <summary>
        /// 从表格行数据中提取会议对象
        /// </summary>
        /// <param name="row">数据行</param>
        /// <returns>返回获取到的会议对象</returns>
        public MeetingData GetMeetingData(DataRow row)
        {
            MeetingData data = new MeetingData();

            data.标题      = row["标题"].ToString();
            data.创建人工号   = row["创建人工号"].ToString();
            data.创建人姓名   = row["创建人姓名"].ToString();
            data.创建日期    = (DateTime)row["创建日期"];
            data.开始时间    = (DateTime)row["开始时间"];
            data.结束时间    = (DateTime)row["结束时间"];
            data.会议编号    = row["会议编号"].ToString();
            data.会议正文    = row["会议正文"].ToString();
            data.会议状态    = (MeetingStatus)Enum.Parse(typeof(MeetingStatus), row["会议状态"].ToString());
            data.会议资源    = row["会议资源"].ToString();
            data.记录人工号   = row["记录人工号"].ToString();
            data.记录人姓名   = row["记录人姓名"].ToString();
            data.主持人工号   = row["主持人工号"].ToString();
            data.主持人姓名   = row["主持人姓名"].ToString();
            data.事务类别    = DailyWorkType.会议;
            data.与会人员    = row["与会人员"].ToString();
            data.提醒方式    = (MeetingAlarmMode)Enum.Parse(typeof(MeetingAlarmMode), row["提醒方式"].ToString());
            data.提醒提前分钟数 = (int)row["提醒提前分钟数"];
            data.重要性     = (TaskImportance)Enum.Parse(typeof(TaskImportance), row["重要性"].ToString());

            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            var peoples = from r in ctx.PRJ_DailyWorkNotifyPeople
                          where r.DailyWorkID == data.会议编号
                          select r.WorkID;

            List <PersonnelBasicInfo> lstPersonnel = new List <PersonnelBasicInfo>();

            foreach (var item in peoples)
            {
                lstPersonnel.Add(new PersonnelBasicInfo {
                    工号 = item, 姓名 = UniversalFunction.GetPersonnelName(item)
                });
            }

            data.与会人员对象集 = lstPersonnel;

            data.会议资源对象集 = (from r in ctx.PRJ_ResourceUsageList
                            join a in ctx.View_PRJ_Resource on r.ResourceID equals a.资源编号
                            where r.TaskID == data.会议编号
                            select a).ToList();

            return(data);
        }
Example #15
0
        /// <summary>
        /// 更新会议状态
        /// </summary>
        /// <param name="meetingID">会议编号</param>
        /// <param name="status">会议状态</param>
        public void UpdateStatus(string meetingID, MeetingStatus status)
        {
            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            var result = from r in ctx.PRJ_DailyWork
                         where r.ID == meetingID
                         select r;

            if (result.Count() == 1)
            {
                PRJ_DailyWork dailyWork = result.Single();

                if (status == MeetingStatus.撤销 && ServerTime.Time > dailyWork.BeginTime.AddMinutes(-20))
                {
                    throw new Exception("已经过了撤销时间,必须在会议开始时间20分钟前撤销");
                }
                else if (status == MeetingStatus.已发 && ServerTime.Time > dailyWork.BeginTime.AddMinutes(-20))
                {
                    throw new Exception("已经过了发布时间,必须在会议开始时间20分钟前发布");
                }

                dailyWork.Status = status.ToString();

                if (status == MeetingStatus.撤销)
                {
                    DeleteAlarmInfo(ctx, dailyWork);
                }
                else if (status == MeetingStatus.已发)
                {
                    string error = null;

                    if (!CheckMeeting(dailyWork, out error))
                    {
                        throw new Exception(error);
                    }

                    AddAlarmInfo(ctx, dailyWork);
                }

                ctx.SubmitChanges();
            }
            else
            {
                throw new Exception("您还没有保存会议信息,请保存会议信息后再发布");
            }
        }
Example #16
0
        /// <summary>
        /// 检查会议室等资源是否被占用
        /// </summary>
        /// <param name="dailyWork">会议信息</param>
        /// <param name="error">错误时输出错误信息</param>
        /// <returns>检查是否通过的标志</returns>
        private bool CheckMeetingResource(PRJ_DailyWork dailyWork, out string error)
        {
            error = null;

            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            var resourceID = (from r in ctx.PRJ_ResourceUsageList
                              where r.TaskID == dailyWork.ID
                              select r.ResourceID).ToList();

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("下列会议资源已经被占用,当前会议无法使用:");

            int                      i = 0;
            IResourceServer          resourceServer = TaskObjectFactory.GetOperator <IResourceServer>();
            List <View_PRJ_Resource> resources      = resourceServer.GetMeetingResource(dailyWork.BeginTime, dailyWork.EndTime);

            foreach (var item in resourceID)
            {
                if (!resourceServer.IsIdle(item, dailyWork.BeginTime, dailyWork.EndTime))
                {
                    sb.AppendLine(string.Format("{0}. {1};", ++i, resources.Find(p => p.资源编号 == item).资源名称));
                }
            }

            if (i > 0)
            {
                error = sb.ToString();
                return(false);
            }
            else
            {
                return(true);
            }
        }
Example #17
0
        /// <summary>
        /// 保存会议信息
        /// </summary>
        /// <param name="info">要保存的数据</param>
        public void Save(MeetingData info)
        {
            if (ServerTime.Time > info.开始时间.AddMinutes(-10))
            {
                throw new Exception("会议开始时间必须在当前时间10分钟前");
            }

            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            var result = from r in ctx.PRJ_DailyWork
                         where r.ID == info.会议编号
                         select r;

            ctx.Connection.Open();
            ctx.Transaction = ctx.Connection.BeginTransaction();

            try
            {
                if (result.Count() > 0)
                {
                    Delete(ctx, info.会议编号);
                }

                PRJ_DailyWork dailyWork = new PRJ_DailyWork();

                DateTime date = ServerTime.Time;

                result = from r in ctx.PRJ_DailyWork
                         where r.TypeID == (int)DailyWorkType.会议 && r.ID.Substring(3, 4) == date.Year.ToString()
                         select r;

                int maxValue = 1;

                if (result.Count() > 0)
                {
                    maxValue += (from r in ctx.PRJ_DailyWork
                                 where r.TypeID == (int)DailyWorkType.会议 && r.ID.Substring(3, 4) == date.Year.ToString()
                                 select Convert.ToInt32(r.ID.Substring(9))).Max();
                }

                // HYX : 会议项
                dailyWork.ID = string.Format("HYX{0:D4}{1:D2}{2:D5}", date.Year, date.Month, maxValue);

                info.会议编号 = dailyWork.ID;

                dailyWork.ImportanceID = Convert.ToInt32(info.重要性);
                dailyWork.BeginTime    = info.开始时间.AddSeconds(-info.开始时间.Second);
                dailyWork.EndTime      = info.结束时间.AddSeconds(-info.结束时间.Second);
                dailyWork.Content      = info.会议正文;
                dailyWork.Date         = ServerTime.Time;
                dailyWork.NeedToReply  = false;
                dailyWork.Status       = MeetingStatus.待发.ToString();
                dailyWork.Title        = info.标题;
                dailyWork.TypeID       = (int)info.事务类别; // 类别为:会议
                dailyWork.WorkID       = BasicInfo.LoginID;

                ctx.PRJ_DailyWork.InsertOnSubmit(dailyWork);

                PRJ_MeetingExpandedInfo meetingExpandedInfo = new PRJ_MeetingExpandedInfo();

                meetingExpandedInfo.DailyWorkID = dailyWork.ID;
                meetingExpandedInfo.AlarmMode   = info.提醒方式.ToString();
                meetingExpandedInfo.AlarmValue  = info.提醒提前分钟数;
                meetingExpandedInfo.HostCode    = info.主持人工号;
                meetingExpandedInfo.Recorder    = info.记录人工号;

                ctx.PRJ_MeetingExpandedInfo.InsertOnSubmit(meetingExpandedInfo);

                // 设置与会人员
                if (info.与会人员对象集 != null)
                {
                    foreach (var item in info.与会人员对象集)
                    {
                        PRJ_DailyWorkNotifyPeople people = new PRJ_DailyWorkNotifyPeople();

                        people.WorkID      = item.工号;
                        people.DailyWorkID = dailyWork.ID;

                        ctx.PRJ_DailyWorkNotifyPeople.InsertOnSubmit(people);
                    }
                }

                // 设置会议使用的资源
                if (info.会议资源对象集 != null)
                {
                    foreach (var item in info.会议资源对象集)
                    {
                        PRJ_ResourceUsageList rul = new PRJ_ResourceUsageList();

                        rul.ResourceID = (int)item.资源编号;
                        rul.TaskID     = dailyWork.ID;
                        rul.BeginTime  = dailyWork.BeginTime;
                        rul.EndTime    = dailyWork.EndTime;
                        rul.Remark     = "";

                        ctx.PRJ_ResourceUsageList.InsertOnSubmit(rul);
                    }
                }

                ctx.SubmitChanges();

                ctx.Transaction.Commit();

                info.会议状态 = MeetingStatus.待发;
            }
            catch (Exception exce)
            {
                ctx.Transaction.Rollback();
                throw exce;
            }
        }
        /// <summary>
        /// 判断资源是否空闲
        /// </summary>
        /// <param name="resourceID">资源编号</param>
        /// <param name="beginTime">占用资源的开始时间</param>
        /// <param name="endTime">占用资源的结束时间</param>
        /// <returns>空闲返回true</returns>
        public bool IsIdle(int resourceID, DateTime beginTime, DateTime endTime)
        {
            TaskManagementDataContext ctx = CommentParameter.TaskManagementDataContext;

            return((bool)ctx.Fun_GetResourceStatus(resourceID, beginTime, endTime));
        }
Example #19
0
        /// <summary>
        /// 添加提醒信息
        /// </summary>
        /// <param name="ctx">数据库操作上下文</param>
        /// <param name="dailyWork">会议信息</param>
        private void AddAlarmInfo(TaskManagementDataContext ctx, PRJ_DailyWork dailyWork)
        {
            View_PRJ_Meeting meeting = (from r in ctx.View_PRJ_Meeting
                                        where r.会议编号 == dailyWork.ID
                                        select r).Single();

            // 会议地址
            string address = (from r in ctx.View_PRJ_Resource
                              join a in ctx.PRJ_ResourceUsageList on r.资源编号 equals a.ResourceID
                              where r.资源类别名称 == "会议室" && a.TaskID == dailyWork.ID
                              select r.资源名称).First();

            // 报警提示信息
            IWarningNotice warningNoticeServer = PlatformFactory.GetObject <IWarningNotice>();

            List <string> lstAlarmUser = new List <string>();

            lstAlarmUser.Add(meeting.记录人工号);
            lstAlarmUser.Add(meeting.主持人工号);

            var peoples = (from r in ctx.PRJ_DailyWorkNotifyPeople
                           where r.DailyWorkID == dailyWork.ID
                           select r.WorkID).ToList();

            if (peoples != null && peoples.Count > 0)
            {
                lstAlarmUser.AddRange(peoples);
            }

            lstAlarmUser = lstAlarmUser.Distinct().ToList();

            // 提醒设置
            foreach (var user in lstAlarmUser)
            {
                if (meeting.提醒方式 == MeetingAlarmMode.短信及消息框提醒.ToString() || meeting.提醒方式 == MeetingAlarmMode.仅短信提醒.ToString())
                {
                    PRJ_TaskAlarmSetting alarmSetting = new PRJ_TaskAlarmSetting();

                    alarmSetting.AlarmUser   = user;
                    alarmSetting.ItemID      = dailyWork.ID;
                    alarmSetting.AlarmModeID = (int)Enum.Parse(typeof(MeetingAlarmMode), meeting.提醒方式);
                    alarmSetting.AlarmValue  = meeting.开始时间.AddMinutes(-meeting.提醒提前分钟数).ToString("yyyy-MM-dd HH:mm");

                    alarmSetting.AlarmContent = string.Format("请于({0})在({1})开会,主题:{2},主持人:{3}",
                                                              dailyWork.BeginTime.ToString("MM-dd HH:mm"), address, dailyWork.Title, meeting.主持人姓名);

                    alarmSetting.RecordTime = dailyWork.Date;

                    ctx.PRJ_TaskAlarmSetting.InsertOnSubmit(alarmSetting);
                }

                if (meeting.提醒方式 == MeetingAlarmMode.短信及消息框提醒.ToString() || meeting.提醒方式 == MeetingAlarmMode.仅消息框提醒.ToString())
                {
                    Flow_WarningNotice notice = new Flow_WarningNotice();

                    if (meeting.重要性 != TaskImportance.普通.ToString())
                    {
                        notice.优先级 = "高";
                    }
                    else
                    {
                        notice.优先级 = "低";
                    }

                    notice.来源 = "会议管理系统";

                    View_Auth_User userInfo = PlatformFactory.GetUserManagement().GetUser(meeting.创建人工号);

                    notice.状态  = "未读";
                    notice.发送方 = string.Format("{0},{1}", PlatformFactory.GetDeptManagement().GetDepartment(userInfo.部门).部门名称, userInfo.姓名);

                    notice.接收方类型 = "用户";
                    notice.接收方   = user;
                    notice.标题    = dailyWork.Title;
                    notice.内容    = string.Format("请您于({0})在({1})召开会议,主持人:{2},会议正文:{3}",
                                                 dailyWork.BeginTime.ToString("yyyy-MM-dd HH:mm"), address, meeting.主持人姓名, dailyWork.Content);
                    notice.附加信息1 = "会议管理";
                    notice.附加信息2 = dailyWork.ID;
                    notice.附加信息3 = dailyWork.BeginTime.ToString();
                    notice.附加信息4 = dailyWork.EndTime.ToString();

                    warningNoticeServer.SendWarningNotice(notice);
                }
            }
        }