using BLL; using Model; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using AspNet = System.Web.UI.WebControls; namespace FineUIPro.Web.ProjectData { public partial class MasterProjectDataAnalysis : PageBase { /// /// 集团在建主数据 /// public static List masterProDatas = new List(); ///// ///// QHSE施工中项目集合 ///// //public static List getProjects = new List(); #region 加载 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //获取集团在建主数据 masterProDatas = ProjectService.GetMasterProjectDataInfos(); ////获取QHSE施工中项目集合 //getProjects = ProjectService.GetProjectWorkList(); TabStrip1_TabIndexChanged(null, null); } } /// /// 页签切换事件 /// /// /// protected void TabStrip1_TabIndexChanged(object sender, EventArgs e) { if (TabStrip1.ActiveTabIndex == 0) { this.Panel1.Title = "已关联"; this.BindGrid(); } else if (TabStrip1.ActiveTabIndex == 1) { this.Panel1.Title = "待建"; this.BindGrid2(); } else if (TabStrip1.ActiveTabIndex == 2) { this.Panel1.Title = "申请不用"; this.BindGrid3(); } else if (TabStrip1.ActiveTabIndex == 3) { this.Panel1.Title = "预立项"; this.BindGrid4(); } else if (TabStrip1.ActiveTabIndex == 4) { this.Panel1.Title = "数据汇总"; this.BindGrid9(); } //else if (TabStrip1.ActiveTabIndex == 4) //{ // this.Panel1.Title = "自建"; // //this.BindGrid5(); //} } #endregion #region 已关联数据 #region 绑定数据 /// /// 绑定数据 /// private void BindGrid() { var list = new List(); var db = Funs.DB; var query = (from x in masterProDatas join pro in db.Base_Project on x.Pro_id equals pro.MasterSysId into proGroup from pro in proGroup.DefaultIfEmpty() //join use in db.Project_MasterDataUsage on x.Pro_id equals use.Pro_id into useGroup //from use in useGroup.DefaultIfEmpty() where pro != null && pro.MasterSysId != null //&& pro.ProjectState == Const.ProjectState_1 select new MasterProjectDataInfo { //Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}|{(use != null ? use.Id : "")}", Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}", Pro_id = x.Pro_id, Pro_name = x.Pro_name, Pro_code = x.Pro_code, Start_date = x.Start_date, Con_mode_desc = x.Con_mode_desc, Pro_nature = x.Pro_nature, Pro_status = x.Pro_status, Org_name = x.Org_name, Amount = ConvertAmount(x.Ori_amt_sum_vat_fc, x.Amt_add_sum_vat_fc_local), ProjectId = pro != null ? pro.ProjectId : null, ProjectName = pro != null ? pro.ProjectName : "", ProjectCode = pro != null ? pro.ProjectCode : "", StartDate = pro != null ? pro.StartDate : null, ProjectState = pro != null ? pro.ProjectState : "", Relate = pro != null && pro.MasterSysId != null ? 1 : 2, RelateName = pro != null && pro.MasterSysId != null ? "已关联" : "未关联", }).ToList(); string startDate = this.txtStartTime.Text.Trim(); string endDate = this.txtEndTime.Text.Trim(); if (!string.IsNullOrWhiteSpace(startDate)) { query = query.Where(x => Funs.GetNewDateTime(x.Start_date) >= Funs.GetNewDateTime(startDate)).ToList(); } if (!string.IsNullOrWhiteSpace(endDate)) { query = query.Where(x => Funs.GetNewDateTime(x.Start_date) <= Funs.GetNewDateTime(endDate)).ToList(); } query = query.OrderByDescending(x => x.StartDate).ToList(); list.AddRange(query); ////// 获取施工中的项目 //getProjects = getProjects.Where(x => x.MasterSysId == null).OrderByDescending(x => x.StartDate).ToList(); //foreach (var pro in getProjects) //{ // list.Add(new MasterProjectDataInfo // { // Pid = $"|{pro.ProjectId}", // Pro_id = "", // Pro_name = "", // Pro_code = "", // Start_date = "", // Con_mode_desc = "", // Pro_nature = "", // Pro_status = "", // Org_name = "", // Amount = "", // ProjectId = pro != null ? pro.ProjectId : null, // ProjectName = pro != null ? pro.ProjectName : "", // ProjectCode = pro != null ? pro.ProjectCode : "", // StartDate = pro != null ? pro.StartDate : null, // ProjectState = pro != null ? pro.ProjectState : "", // Relate = 3, // RelateName = "未对应", // UseId = null, // //Use = use == null ? "" : (use != null && use.Is_use == true) ? "已使用" : "未使用", // ReasonType = "", // Reason = "", // //Situation = use != null ? use.Situation : "", // //Remark = use != null ? use.Remark : "", // }); //} string proName = this.txtProName.Text.Trim(); string proCode = this.txtProCode.Text.Trim(); string projectName = this.txtProjectName.Text.Trim(); string projectCode = this.txtProjectCode.Text.Trim(); //int relate = int.Parse(this.rblIsRelate.SelectedValue); if (!string.IsNullOrEmpty(proName)) { list = list.Where(x => x.Pro_name.Contains(proName)).ToList(); } if (!string.IsNullOrEmpty(proCode)) { list = list.Where(x => x.Pro_code.Contains(proCode)).ToList(); } if (!string.IsNullOrEmpty(projectName)) { list = list.Where(x => x.ProjectName.Contains(projectName)).ToList(); } if (!string.IsNullOrEmpty(projectCode)) { list = list.Where(x => x.ProjectCode.Contains(projectCode)).ToList(); } //if (relate > 0) //{ // list = list.Where(x => x.Relate == relate).ToList(); //} DataTable tb = Funs.LINQToDataTable(list); Grid1.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); int totalNum = list.Count(); JObject summary = new JObject(); summary.Add("tfNumber", "合计"); summary.Add("Pro_name", totalNum); Grid1.SummaryData = summary; } /// /// 合同额(亿) /// /// 合同含税金额原始存档(元) /// 增补合同本币含税金额(元) /// protected string ConvertAmount(decimal? Ori_amt, decimal? Amt_add) { string result = string.Empty; Ori_amt = Ori_amt == null ? 0 : Ori_amt; Amt_add = Amt_add == null ? 0 : Amt_add; decimal? all = Amt_add + Ori_amt; if (all != null) { double amount = all == null ? 0 : (Math.Round((double)(all / 100000000m), 2)); result = amount.ToString(); } return result; } /// /// 项目状态 /// /// /// protected string ConvertProjectState(object state) { string result = string.Empty; string stateStr = state.ToString(); if (state != null && !string.IsNullOrWhiteSpace(stateStr)) { result = stateStr == "2" ? "暂停中" : stateStr == "3" ? "已完工" : "施工中"; } return result; } #endregion #region Grid protected void TextBox_TextChanged(object sender, EventArgs e) { this.BindGrid(); } /// /// /// /// /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { this.BindGrid(); } protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e) { this.BindGrid(); } #endregion #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; this.BindGrid(); Response.Write(GetGridMultiHeaderTableHtml2(Grid1)); //Response.Write(GetGridTableHtml(Grid1)); Response.End(); } #endregion #endregion #region 待建数据 #region 绑定数据 /// /// 绑定数据 /// private void BindGrid2() { var list = new List(); var db = Funs.DB; var query = (from x in masterProDatas join pro in db.Base_Project on x.Pro_id equals pro.MasterSysId into proGroup from pro in proGroup.DefaultIfEmpty() join use in db.Project_MasterDataUsage on x.Pro_id equals use.Pro_id into useGroup from use in useGroup.DefaultIfEmpty() where pro == null && (use == null || (use != null && (use.Reason == null || use.Reason == ""))) select new MasterProjectDataInfo { //Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}|{(use != null ? use.Id : "")}", //Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}", Pid = x.Pro_id, Pro_id = x.Pro_id, Pro_name = x.Pro_name, Pro_code = x.Pro_code, Start_date = x.Start_date, Con_mode_desc = x.Con_mode_desc, Pro_nature = x.Pro_nature, Pro_status = x.Pro_status, Org_name = x.Org_name, Amount = ConvertAmount(x.Ori_amt_sum_vat_fc, x.Amt_add_sum_vat_fc_local) }).ToList(); string startDate = this.txtStartTime2.Text.Trim(); string endDate = this.txtEndTime2.Text.Trim(); if (!string.IsNullOrWhiteSpace(startDate)) { query = query.Where(x => Funs.GetNewDateTime(x.Start_date) >= Funs.GetNewDateTime(startDate)).ToList(); } if (!string.IsNullOrWhiteSpace(endDate)) { query = query.Where(x => Funs.GetNewDateTime(x.Start_date) <= Funs.GetNewDateTime(endDate)).ToList(); } query = query.OrderByDescending(x => x.StartDate).ToList(); list.AddRange(query); string proName = this.txtProName2.Text.Trim(); string proCode = this.txtProCode2.Text.Trim(); if (!string.IsNullOrEmpty(proName)) { list = list.Where(x => x.Pro_name.Contains(proName)).ToList(); } if (!string.IsNullOrEmpty(proCode)) { list = list.Where(x => x.Pro_code.Contains(proCode)).ToList(); } DataTable tb = Funs.LINQToDataTable(list); Grid2.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(Grid2, tb); Grid2.DataSource = table; Grid2.DataBind(); int totalNum = list.Count(); JObject summary = new JObject(); summary.Add("tfPageIndex", "合计"); summary.Add("Pro_name", totalNum); Grid2.SummaryData = summary; } #endregion #region Grid protected void TextBox2_TextChanged(object sender, EventArgs e) { this.BindGrid2(); } /// /// /// /// /// protected void Grid2_PageIndexChange(object sender, GridPageEventArgs e) { this.BindGrid2(); } protected void Grid2_Sort(object sender, FineUIPro.GridSortEventArgs e) { this.BindGrid2(); } #endregion #region 导出按钮 /// /// 导出按钮 /// /// /// protected void btnOut2_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.Grid2.PageSize = this.Grid2.RecordCount; this.BindGrid2(); Response.Write(GetGridMultiHeaderTableHtml2(Grid2)); //Response.Write(GetGridTableHtml(Grid2)); Response.End(); } #endregion #endregion #region 申请不用数据 #region 绑定数据 /// /// 绑定数据 /// private void BindGrid3() { var list = new List(); var db = Funs.DB; var query = (from x in masterProDatas join pro in db.Base_Project on x.Pro_id equals pro.MasterSysId into proGroup from pro in proGroup.DefaultIfEmpty() join use in db.Project_MasterDataUsage on x.Pro_id equals use.Pro_id into useGroup from use in useGroup.DefaultIfEmpty() where pro == null && use != null && use.Reason != null && use.Reason != "" select new MasterProjectDataInfo { //Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}|{(use != null ? use.Id : "")}", //Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}", Pid = x.Pro_id, Pro_id = x.Pro_id, Pro_name = x.Pro_name, Pro_code = x.Pro_code, Start_date = x.Start_date, Con_mode_desc = x.Con_mode_desc, Pro_nature = x.Pro_nature, Pro_status = x.Pro_status, Org_name = x.Org_name, Amount = ConvertAmount(x.Ori_amt_sum_vat_fc, x.Amt_add_sum_vat_fc_local), ReasonType = use != null ? use.ReasonType : "", Reason = use != null ? use.Reason : "", }).ToList(); string startDate = this.txtStartTime3.Text.Trim(); string endDate = this.txtEndTime3.Text.Trim(); if (!string.IsNullOrWhiteSpace(startDate)) { query = query.Where(x => Funs.GetNewDateTime(x.Start_date) >= Funs.GetNewDateTime(startDate)).ToList(); } if (!string.IsNullOrWhiteSpace(endDate)) { query = query.Where(x => Funs.GetNewDateTime(x.Start_date) <= Funs.GetNewDateTime(endDate)).ToList(); } //query = query.OrderByDescending(x => x.StartDate).ToList(); list.AddRange(query); string proName = this.txtProName3.Text.Trim(); string proCode = this.txtProCode3.Text.Trim(); if (!string.IsNullOrEmpty(proName)) { list = list.Where(x => x.Pro_name.Contains(proName)).ToList(); } if (!string.IsNullOrEmpty(proCode)) { list = list.Where(x => x.Pro_code.Contains(proCode)).ToList(); } DataTable tb = Funs.LINQToDataTable(list); Grid3.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(Grid3, tb); Grid3.DataSource = table; Grid3.DataBind(); int totalNum = list.Count(); JObject summary = new JObject(); summary.Add("tfPageNo", "合计"); summary.Add("Pro_name", totalNum); Grid3.SummaryData = summary; } #endregion #region Grid protected void TextBox3_TextChanged(object sender, EventArgs e) { this.BindGrid3(); } /// /// /// /// /// protected void Grid3_PageIndexChange(object sender, GridPageEventArgs e) { this.BindGrid3(); } protected void Grid3_Sort(object sender, FineUIPro.GridSortEventArgs e) { this.BindGrid3(); } #endregion #region 导出按钮 /// /// 导出按钮 /// /// /// protected void btnOut3_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.Grid3.PageSize = this.Grid3.RecordCount; this.BindGrid3(); Response.Write(GetGridMultiHeaderTableHtml2(Grid3)); //Response.Write(GetGridTableHtml(Grid3)); Response.End(); } #endregion #endregion #region 预立项数据 #region 绑定数据 /// /// 绑定数据 /// private void BindGrid4() { //var list = new List(); var db = Funs.DB; var projects = ProjectService.GetProjectWorkList(); var list = (from x in projects where x.MasterSysId == null select new MasterProjectDataInfo { Pid = x.ProjectId, ProjectId = x.ProjectId, ProjectName = x.ProjectName, ProjectCode = x.ProjectCode, StartDate = x.StartDate, ProjectState = x.ProjectState, }).ToList(); string projectName = this.txtProjectName4.Text.Trim(); string projectCode = this.txtProjectCode4.Text.Trim(); if (!string.IsNullOrEmpty(projectName)) { list = list.Where(x => x.ProjectName.Contains(projectName)).ToList(); } if (!string.IsNullOrEmpty(projectCode)) { list = list.Where(x => x.ProjectCode.Contains(projectCode)).ToList(); } string startDate = this.txtStartTime4.Text.Trim(); string endDate = this.txtEndTime4.Text.Trim(); if (!string.IsNullOrWhiteSpace(startDate)) { list = list.Where(x => x.StartDate >= Funs.GetNewDateTime(startDate)).ToList(); } if (!string.IsNullOrWhiteSpace(endDate)) { list = list.Where(x => x.StartDate <= Funs.GetNewDateTime(endDate)).ToList(); } //list = list.OrderByDescending(x => x.StartDate).ToList(); //list.AddRange(query); DataTable tb = Funs.LINQToDataTable(list); Grid4.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(Grid4, tb); Grid4.DataSource = table; Grid4.DataBind(); int totalNum = list.Count(); JObject summary = new JObject(); summary.Add("tfPageNum", "合计"); summary.Add("ProjectCode", totalNum); Grid4.SummaryData = summary; } #endregion #region Grid protected void TextBox4_TextChanged(object sender, EventArgs e) { this.BindGrid4(); } /// /// /// /// /// protected void Grid4_PageIndexChange(object sender, GridPageEventArgs e) { this.BindGrid4(); } protected void Grid4_Sort(object sender, FineUIPro.GridSortEventArgs e) { this.BindGrid4(); } #endregion #region 导出按钮 /// /// 导出按钮 /// /// /// protected void btnOut4_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.Grid4.PageSize = this.Grid4.RecordCount; this.BindGrid4(); Response.Write(GetGridMultiHeaderTableHtml2(Grid4)); //Response.Write(GetGridTableHtml(Grid4)); Response.End(); } #endregion #endregion #region 数据汇总 #region 绑定数据 /// /// 绑定数据 /// private void BindGrid9() { var db = Funs.DB; var list = (from x in db.Project_MasterDataAnalysis orderby x.ReportDate descending,x.DataDate descending select x).ToList().Take(30); string startDate = this.txtStartTime9.Text.Trim(); string endDate = this.txtEndTime9.Text.Trim(); if (!string.IsNullOrWhiteSpace(startDate)) { list = list.Where(x => x.ReportDate >= Funs.GetNewDateTime(startDate)).ToList(); } if (!string.IsNullOrWhiteSpace(endDate)) { list = list.Where(x => x.ReportDate <= Funs.GetNewDateTime(endDate)).ToList(); } DataTable tb = Funs.LINQToDataTable(list); Grid9.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(Grid9, tb); Grid9.DataSource = table; Grid9.DataBind(); } #endregion #region Grid protected void TextBox9_TextChanged(object sender, EventArgs e) { this.BindGrid9(); } /// /// /// /// /// protected void Grid9_PageIndexChange(object sender, GridPageEventArgs e) { this.BindGrid9(); } protected void Grid9_Sort(object sender, FineUIPro.GridSortEventArgs e) { this.BindGrid9(); } #endregion #region 导出按钮 /// /// 导出按钮 /// /// /// protected void btnOut9_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.Grid9.PageSize = this.Grid9.RecordCount; this.BindGrid9(); Response.Write(GetGridMultiHeaderTableHtml2(Grid9)); //Response.Write(GetGridTableHtml(Grid9)); Response.End(); } #endregion #region 汇总上报 /// /// 汇总上报 /// /// /// protected void btnReport_Click(object sender, EventArgs e) { var reportList = ProjectMasterDataAnalysisService.GetRecentHourAnalysisReportList(); if (reportList.Any()) { Alert.ShowInTop("近一小时内已汇总上报,请勿频繁上报!", MessageBoxIcon.Warning); return; } else { string message = string.Empty; string code = ProjectMasterDataAnalysisService.ReportProjectMasterDataAnalysis(this.CurrUser.UserName,ref message); if (code == "1") { this.BindGrid9(); ShowNotify(message, MessageBoxIcon.Success); PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference()); return; } else { Alert.ShowInParent(message, MessageBoxIcon.Error); } } } #endregion #endregion #region 多表头导出方法 /// /// 多表头导出方法 /// /// /// public string GetGridMultiHeaderTableHtml2(Grid grid) { StringBuilder sb = new StringBuilder(); sb.Append(""); sb.Append(""); MultiHeaderTable mht = new MultiHeaderTable(); mht.ResolveMultiHeaderTable(grid.Columns); foreach (List rows in mht.MultiTable) { sb.Append(""); foreach (object[] cell in rows) { int rowspan = Convert.ToInt32(cell[0]); int colspan = Convert.ToInt32(cell[1]); GridColumn column = cell[2] as GridColumn; if (column.Hidden == false) { sb.AppendFormat("{3}", rowspan != 1 ? " rowspan=\"" + rowspan + "\"" : "", colspan != 1 ? " colspan=\"" + colspan + "\"" : "", colspan != 1 ? " style=\"text-align:center;\"" : "", column.HeaderText); } } sb.Append(""); } foreach (GridRow row in grid.Rows) { sb.Append(""); //if (row.Grid.gr.Hidden == false) { foreach (GridColumn column in mht.Columns) { if (column.ColumnID != "ckbIsSelected" && column.ColumnID != "Punish" && column.ColumnID != "Del") { string html = row.Values[column.ColumnIndex].ToString(); if (column.ColumnID == "tfNumber") { html = (row.FindControl("lblNumber") as AspNet.Label).Text; } else if (column.ColumnID == "tfPageIndex") { html = (row.FindControl("lblPageIndex") as AspNet.Label).Text; } else if (column.ColumnID == "tfPageNo") { html = (row.FindControl("lblPageNo") as AspNet.Label).Text; } else if (column.ColumnID == "tfPageNum") { html = (row.FindControl("lblPageNum") as AspNet.Label).Text; } else if (column.ColumnID == "tfNum") { html = (row.FindControl("lblNum") as AspNet.Label).Text; } else if (column.ColumnID == "tfState") { html = (row.FindControl("lblState") as AspNet.Label).Text; } else if (column.ColumnID == "tfProState") { html = (row.FindControl("lblProState") as AspNet.Label).Text; } else if (column.ColumnID == "tfStatus") { html = (row.FindControl("lblStatus") as AspNet.Label).Text; } sb.AppendFormat("", html); } } //} sb.Append(""); } sb.Append("
{0}
"); return sb.ToString(); } #endregion } }