/// <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); }
/// <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; } }