using BLL; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Linq; namespace FineUIPro.Web.Door { public partial class InOutManHours : PageBase { /// /// 项目id /// public string ProjectId { get { return (string)ViewState["ProjectId"]; } set { ViewState["ProjectId"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.ProjectId = this.CurrUser.LoginProjectId; if (!string.IsNullOrEmpty(Request.Params["projectId"]) && Request.Params["projectId"] != this.ProjectId) { this.ProjectId = Request.Params["projectId"]; } Funs.DropDownPageSize(this.ddlPageSize); UnitService.InitUnitDropDownList(this.drpUnit, this.ProjectId, true); WorkPostService.InitWorkPostDropDownList(this.drpWorkPost, true); this.txtStartDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now); this.txtEndDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now); GetPersonStatistic(); } } /// /// 获取数据 /// private void GetPersonStatistic() { string unitId = null; string PostId = null; if (this.drpUnit.SelectedValue != Const._Null && !string.IsNullOrEmpty(this.drpUnit.SelectedValue)) { unitId = Funs.GetStringByArray(this.drpUnit.SelectedValueArray); } if (this.drpWorkPost.SelectedValue != Const._Null && !string.IsNullOrEmpty(this.drpWorkPost.SelectedValue)) { PostId = Funs.GetStringByArray(this.drpWorkPost.SelectedValueArray); } var getData = Funs.DB.spInOutManHoursReport(this.ProjectId, unitId, PostId, Funs.GetNewDateTimeOrNow(this.txtStartDate.Text), Funs.GetNewDateTimeOrNow(this.txtEndDate.Text)); DataTable tb = GetTreeDataTable(getData.ToList()); //this.LINQToDataTable(getData.ToList()); Grid1.RecordCount = tb.Rows.Count; //tb = GetFilteredTable(Grid1.FilteredData, tb); this.OutputSummaryData(tb); ///取合计值 var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); } /// /// 获取模拟树表格 /// /// public DataTable GetTreeDataTable(List getData) { DataTable table = new DataTable(); table.Columns.Add(new DataColumn("ID", typeof(string))); table.Columns.Add(new DataColumn("ParentId", typeof(string))); table.Columns.Add(new DataColumn("UnitName", typeof(String))); table.Columns.Add(new DataColumn("PostName", typeof(String))); table.Columns.Add(new DataColumn("PersonCountSum", typeof(int))); table.Columns.Add(new DataColumn("ManCountSum", typeof(int))); table.Columns.Add(new DataColumn("ManHoursSum", typeof(int))); DataRow row; var getSum = from p in getData group p by p.UnitId into g select new { ID=SQLHelper.GetNewID(), g.First().UnitId, g.First().UnitName, PostName = "小计", ManHoursSum = g.Sum(x => x.ManHoursSum ?? 0), ManCountSum = g.Sum(x => x.ManCountSum ?? 0), PersonCountSum = getSumSysCount(g.First().ProjectId, g.First().UnitId), }; foreach (var item in getSum) { row = table.NewRow(); row[0] = item.ID; row[1] = "-1"; row[2] = item.UnitName; row[3] =item.PostName; row[4] = item.PersonCountSum; row[5] = item.ManCountSum; row[6] = item.ManHoursSum; table.Rows.Add(row); var getU = getData.Where(x => x.UnitId == item.UnitId); foreach (var itemU in getU) { row = table.NewRow(); row[0] = itemU.ID; row[1] = item.ID; row[2] = itemU.UnitName; row[3] = itemU.PostName; row[4] = itemU.PersonCountSum ?? 0; row[5] = itemU.ManCountSum ?? 0; row[6] = itemU.ManHoursSum ?? 0; table.Rows.Add(row); } } return table; } /// private int getSumSysCount(string projectId, string unitId) { return Funs.DB.SitePerson_Person.Where(x => x.ProjectId == projectId && x.UnitId == unitId && x.IsUsed == 1 && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime > DateTime.Now)).Count(); } #region 计算合计 /// /// 计算合计 /// private void OutputSummaryData(DataTable tb) { int PersonCountSumT = 0; int ManCountSumT = 0; int ManHoursSumT = 0; for (int i = 0; i < tb.Rows.Count; i++) { if (tb.Rows[i].ItemArray[1].ToString() == "-1") { PersonCountSumT += Funs.GetNewIntOrZero(tb.Rows[i]["PersonCountSum"].ToString()); ManCountSumT += Funs.GetNewIntOrZero(tb.Rows[i]["ManCountSum"].ToString()); ManHoursSumT += Funs.GetNewIntOrZero(tb.Rows[i]["ManHoursSum"].ToString()); } } JObject summary = new JObject { { "PostName", "合计:" }, { "PersonCountSum", PersonCountSumT+"人" }, { "ManCountSum", ManCountSumT + "人" }, { "ManHoursSum", ManHoursSumT+"小时"} }; Grid1.SummaryData = summary; } #endregion protected void btnSearch_Click(object sender, EventArgs e) { GetPersonStatistic(); } #region 导出按钮 /// 导出按钮 /// /// /// protected void btnOut_Click(object sender, EventArgs e) { Response.ClearContent(); string filename = Funs.GetNewFileName(); Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("现场考勤记录" + filename, System.Text.Encoding.UTF8) + ".xls"); Response.ContentType = "application/excel"; Response.ContentEncoding = System.Text.Encoding.UTF8; this.Grid1.PageSize = this.Grid1.RecordCount; GetPersonStatistic(); Response.Write(GetGridTableHtml(Grid1)); Response.End(); } #endregion #region 分页 排序 /// /// 改变索引事件 /// /// /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { GetPersonStatistic(); } /// /// 分页下拉选择事件 /// /// /// protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { this.Grid1.PageSize = Convert.ToInt32(this.ddlPageSize.SelectedValue); GetPersonStatistic(); } /// /// /// /// /// protected void Grid1_Sort(object sender, GridSortEventArgs e) { GetPersonStatistic(); } #endregion protected void btnView_Click(object sender, EventArgs e) { ViewItem(); } protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e) { ViewItem(); } private void ViewItem() { if (Grid1.SelectedRowIndexArray.Length == 0) { Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning); return; } if (Grid1.SelectedRow.Values[2].ToString() != "小计") { this.CurrUser.SessionString = this.ProjectId + "#" + Grid1.SelectedRow.Values[1].ToString() + "#" + Grid1.SelectedRow.Values[2].ToString() + "#" + this.txtStartDate.Text + "#" + this.txtEndDate.Text; PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("InOutManHoursItem.aspx?strValue={0}", (this.ProjectId + "#" + Grid1.SelectedRow.Values[1] + "#" + Grid1.SelectedRow.Values[2] + "#" + this.txtStartDate.Text + "#" + this.txtEndDate.Text), "查看 - "))); } } protected void drpUnit_SelectedIndexChanged(object sender, EventArgs e) { this.drpUnit.SelectedValueArray = Funs.RemoveDropDownListNull(this.drpUnit.SelectedValueArray); } protected void drpWorkPost_SelectedIndexChanged(object sender, EventArgs e) { this.drpWorkPost.SelectedValueArray = Funs.RemoveDropDownListNull(this.drpWorkPost.SelectedValueArray); } } }