using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using BLL; namespace WebAPI.Controllers { /// /// 会议接口 /// public class MeetingController : ApiController { #region 根据MeetingId获取会议详细信息 /// /// 根据MeetingId获取会议详细信息 /// /// 会议ID /// 会议类型(C-班前会;W-周例会;M-例会;S-专题例会;A-其他会议) /// 会议详细 public Model.ResponeData getMeetingByMeetingId(string meetingId, string meetingType) { var responeData = new Model.ResponeData(); try { responeData.data = APIMeetingService.getMeetingByMeetingId(meetingId, meetingType); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 根据projectId\meetingType\states获取会议列表 /// /// 根据projectId、meetingType获取会议列表 /// /// /// 会议类型(C-班前会;W-周例会;M-例会;S-专题例会;A-其他会议) /// 状态(0-待提交;1-已提交) /// 页码 /// public Model.ResponeData getMeetingByProjectIdStates(string projectId, string meetingType, string states, int pageIndex) { var responeData = new Model.ResponeData(); try { List getDataList = new List(); int pageCount = 0; if (meetingType == "C") { pageCount = Funs.DB.Meeting_ClassMeeting.Count(x => x.ProjectId == projectId && (states == null || (states == "0" && (x.States == "0" || x.States == null)) || (states == "1" && (x.States == "1" || x.States == "2")))); } else if (meetingType == "W") { pageCount = Funs.DB.Meeting_WeekMeeting.Count(x => x.ProjectId == projectId && (states == null || (states == "0" && (x.States == "0" || x.States == null)) || (states == "1" && (x.States == "1" || x.States == "2")))); } else if (meetingType == "M") { pageCount = Funs.DB.Meeting_MonthMeeting.Count(x => x.ProjectId == projectId && (states == null || (states == "0" && (x.States == "0" || x.States == null)) || (states == "1" && (x.States == "1" || x.States == "2")))); } else if (meetingType == "S") { pageCount = Funs.DB.Meeting_SpecialMeeting.Count(x => x.ProjectId == projectId && (states == null || (states == "0" && (x.States == "0" || x.States == null)) || (states == "1" && (x.States == "1" || x.States == "2")))); } else { pageCount = Funs.DB.Meeting_AttendMeeting.Count(x => x.ProjectId == projectId && (states == null || (states == "0" && (x.States == "0" || x.States == null)) || (states == "1" && (x.States == "1" || x.States == "2")))); } if (pageCount > 0 && pageIndex > 0) { getDataList = APIMeetingService.getMeetingByProjectIdStates(projectId, meetingType, states, pageIndex); } responeData.data = new { pageCount, getDataList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 根据ID删除会议 [HttpDelete] public Model.ResponeData DeleteMeeting(string meetingId) { var responeData = new Model.ResponeData(); try { BLL.ClassMeetingService.DeleteClassMeetingById(meetingId); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 保存Meeting /// /// 保存Meeting /// /// 会议信息 /// [HttpPost] public Model.ResponeData SaveMeeting([FromBody] Model.MeetingItem meeting) { var responeData = new Model.ResponeData(); try { APIMeetingService.SaveMeeting(meeting); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 班前会参加人数统计 public Model.ResponeData getClassMeetingPersonCount(string projectId, string meetingDate) { var responeData = new Model.ResponeData(); try { // 1、获取项目用户(管理人员数量) string projectUserSQL = "SELECT * FROM [dbo].[Project_ProjectUser] as pu LEFT JOIN [dbo].[Sys_User] as u on u.UserId = pu.UserId WHERE pu.ProjectId = @ProjectId;"; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", projectId)); SqlParameter[] parameter = listStr.ToArray(); DataTable userTb = SQLHelper.GetDataTableRunText(projectUserSQL, parameter); // 2、 获取班前会列表(日期过滤) List classMettingList = APIMeetingService.getClassMeetingList(projectId, meetingDate); int personCount = 0; classMettingList.ForEach(item => { personCount += item.AttentPersonNum; }); responeData.data = new { manager = userTb.Rows.Count, personCount = personCount, classMettingList = classMettingList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 公司级班前会人员统计 public Model.ResponeData getCompanyMeetingPersonCounts( string meetingDate) { var responeData = new Model.ResponeData(); try { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { string sql = "SELECT p.ProjectId as projectId, p.ProjectName as projectName,(SELECT count(*) FROM [dbo].[Project_ProjectUser] as pu LEFT JOIN [dbo].[Sys_User] as u on u.UserId = pu.UserId WHERE pu.ProjectId = p.ProjectId) as manager,(SELECT SUM(AttentPersonNum) as cpunt FROM [dbo].[Meeting_ClassMeeting] as mc WHERE mc.ProjectId = p.ProjectId AND Year(ClassMeetingDate) = @year AND Month(ClassMeetingDate) = @month AND Day(ClassMeetingDate) = @day) as personCount FROM [dbo].[Base_Project] as p;"; DateTime mdate = Funs.GetNewDateTimeOrNow(meetingDate); List listStr = new List(); listStr.Add(new SqlParameter("@year", mdate.Year)); listStr.Add(new SqlParameter("@month", mdate.Month)); listStr.Add(new SqlParameter("@day", mdate.Day)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(sql, parameter); responeData.data = tb; } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 根据时间获取各单位班会情况 /// /// 根据时间获取各单位班会情况 /// /// /// 单位ID /// 日期 /// 页码 /// public Model.ResponeData getClassMeetingInfo(string projectId, string unitId, string meetingDate, int pageIndex) { var responeData = new Model.ResponeData(); try { var getDataList = APIMeetingService.getClassMeetingInfo(projectId, unitId, meetingDate); int pageCount = getDataList.Count(); if (pageCount > 0 && pageIndex > 0) { getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); } responeData.data = new { pageCount, getDataList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion } }