using BLL; using MiniExcelLibs; using Model; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; namespace FineUIPro.Web.HJGL.PreDesign { public partial class InstallList : PageBase { public int pageSize = 20; public static IQueryable GridDataTable = null; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString(); this.InitTreeMenu();//加载树 } } #region 加载树装置-单位-工作区 /// /// 加载树 /// private void InitTreeMenu() { this.tvControlItem.Nodes.Clear(); TreeNode rootNode1 = new TreeNode(); rootNode1.NodeID = "1"; rootNode1.Text = "建筑工程"; rootNode1.CommandName = "建筑工程"; rootNode1.Selectable = false; this.tvControlItem.Nodes.Add(rootNode1); TreeNode rootNode2 = new TreeNode(); rootNode2.NodeID = "2"; rootNode2.Text = "安装工程"; rootNode2.CommandName = "安装工程"; rootNode2.Expanded = true; this.tvControlItem.Nodes.Add(rootNode2); var pUnits = (from x in Funs.DB.Project_ProjectUnit where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList(); // 获取当前用户所在单位 var currUnit = pUnits.FirstOrDefault(x => x.UnitId == this.CurrUser.UnitId); var unitWorkList = (from x in Funs.DB.WBS_UnitWork where x.ProjectId == this.CurrUser.LoginProjectId && x.SuperUnitWork == null && x.UnitId != null && x.ProjectType != null select x).ToList(); List unitWork1 = null; List unitWork2 = null; //// 当前为施工单位,只能操作本单位的数据 //if (currUnit != null && currUnit.UnitType == Const.ProjectUnitType_2) //{ // unitWork1 = (from x in unitWorkList // where x.UnitId == this.CurrUser.UnitId && x.ProjectType == "1" // select x).ToList(); // unitWork2 = (from x in unitWorkList // where x.UnitId == this.CurrUser.UnitId && x.ProjectType == "2" // select x).ToList(); //} //else //{ unitWork1 = (from x in unitWorkList where x.ProjectType == "1" select x).ToList(); unitWork2 = (from x in unitWorkList where x.ProjectType == "2" select x).ToList(); //} if (unitWork1.Count() > 0) { foreach (var q in unitWork1) { int a = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == q.UnitWorkId && x.PipeArea == "1" && x.PipelineCode.Contains(txtPipelineCode.Text.Trim()) select x.FlowingSection).Distinct().Count(); var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId); TreeNode tn1 = new TreeNode(); tn1.NodeID = q.UnitWorkId; //tn1.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线"; tn1.Text = q.UnitWorkName; tn1.ToolTip = "施工单位:" + unitNamesUnitIds; tn1.CommandName = 1 + "|" + Funs.GetEndPageNumber(a, pageSize); tn1.EnableClickEvent = true; tn1.EnableExpandEvent = true; rootNode1.Nodes.Add(tn1); if (a > 0) { // BindNodes(tn1); TreeNode newNode = new TreeNode(); newNode.Text = "加载流水段..."; newNode.NodeID = "加载流水段..."; tn1.Nodes.Add(newNode); } //if (a > 0) //{ // BindNodes(tn1); //} } } if (unitWork2.Count() > 0) { foreach (var q in unitWork2) { int a = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == q.UnitWorkId && x.PipeArea == "1" && x.PipelineCode.Contains(txtPipelineCode.Text.Trim()) select x.FlowingSection).Distinct().Count(); var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId); TreeNode tn2 = new TreeNode(); tn2.NodeID = q.UnitWorkId; //tn2.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线"; tn2.Text = q.UnitWorkName; if (q.UnitWorkId == this.hdUnitWorkId.Text) { tn2.Expanded = true; } tn2.ToolTip = "施工单位:" + unitNamesUnitIds; tn2.CommandName = 1 + "|" + Funs.GetEndPageNumber(a, pageSize); tn2.EnableClickEvent = true; tn2.EnableExpandEvent = true; rootNode2.Nodes.Add(tn2); if (a > 0) { // BindNodes(tn1); TreeNode newNode = new TreeNode(); newNode.Text = "加载流水段..."; newNode.NodeID = "加载流水段..."; tn2.Nodes.Add(newNode); } //if (a > 0) //{ // BindNodes(tn2); //} } } } private void BindNodes(TreeNode node) { List flowingSection = new List(); //List pipeline = new List(); var list = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.PipeArea == "1" && x.UnitWorkId == node.NodeID && x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()) select x.FlowingSection).ToList(); flowingSection = list.Where(x => !string.IsNullOrWhiteSpace(x) == true).Distinct().OrderBy(x => x).ToList(); //int pageindex = int.Parse(node.CommandName.Split('|')[0]); //int pageCount = int.Parse(node.CommandName.Split('|')[1]); //if (pageindex <= pageCount) //{ // flowingSection = flowingSection.Skip(pageSize * (pageindex - 1)).Take(pageSize).ToList(); foreach (var item in flowingSection) { //var comCount = (from x in Funs.DB.HJGL_Pipeline_Component where x.PipelineId == item.PipelineId select x).Count(); TreeNode newNode = new TreeNode(); //newNode.Text = item.PipelineCode + "【" + comCount.ToString() + " " + "组件" + "】"; newNode.Text = item; newNode.ToolTip = "流水段"; newNode.CommandName = "流水段"; newNode.NodeID = SQLHelper.GetNewID(); newNode.EnableClickEvent = true; node.Nodes.Add(newNode); } // if (pageindex < pageCount) // { // TreeNode newNode = new TreeNode(); // newNode.Text = "加载"; // newNode.NodeID = "加载"; // //newNode.NodeID = SQLHelper.GetNewID(); // newNode.CommandName = "加载"; // newNode.Icon = Icon.ArrowDown; // newNode.EnableClickEvent = true; // node.Nodes.Add(newNode); // } //} } #endregion protected void tvControlItem_TreeNodeExpanded(object sender, TreeNodeEventArgs e) { if (e.Node.Nodes[0].NodeID == "加载流水段...") { e.Node.Nodes.Clear(); BindNodes(e.Node); } } #region 点击TreeView /// /// 点击TreeView /// /// /// protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) { if (e.CommandName == "流水段") { Model.HJGL_Pipeline pipeline = BLL.PipelineService.GetPipelineByFlowingSection(this.tvControlItem.SelectedNode.Text); this.hdUnitWorkId.Text = string.Empty; if (pipeline != null) { this.hdUnitWorkId.Text = this.tvControlItem.SelectedNode.ParentNode.NodeID; } } this.BindGrid(); } #endregion #region 数据绑定 /// /// 数据绑定 /// private void BindGrid() { if (tvControlItem.SelectedNode == null) return; var view_HJGL_InstallDatas = BindData(Grid1.PageIndex+1, Grid1.PageSize,out int totalCount); // 2.获取当前分页数据 Grid1.RecordCount = totalCount; var table = view_HJGL_InstallDatas; Grid1.DataSource = table; Grid1.DataBind(); // 更新汇总信息 UpdateSummary(); } /// /// 更新汇总信息 /// private void UpdateSummary() { try { var baseQuery = from x in Funs.DB.View_HJGL_InstallData select x; // 应用与数据绑定相同的筛选条件 if (tvControlItem.SelectedNode.CommandName.Split('|').Length == 2) { baseQuery = baseQuery.Where(x => x.UnitWorkId == tvControlItem.SelectedNode.NodeID); } else if (tvControlItem.SelectedNode.CommandName == "流水段") { baseQuery = baseQuery.Where(x => x.UnitWorkId == tvControlItem.SelectedNode.ParentNode.NodeID && x.FlowingSection == tvControlItem.SelectedNode.Text); } if (!string.IsNullOrEmpty(txtPipelineCode2.Text)) { baseQuery = baseQuery.Where(x => x.PipelineCode.Contains(txtPipelineCode2.Text.Trim())); } if (!string.IsNullOrEmpty(txtPipelineComponentCode.Text)) { baseQuery = baseQuery.Where(x => x.Code.Contains(txtPipelineComponentCode.Text.Trim())); } if (!string.IsNullOrEmpty(drpTypeStr.SelectedValue)) { baseQuery = baseQuery.Where(x => x.TypeStr.Contains(drpTypeStr.SelectedValue)); } if (!string.IsNullOrEmpty(txtPipelineCode.Text)) { baseQuery = baseQuery.Where(x => x.PipelineCode.Contains(txtPipelineCode.Text.Trim())); } // 计算汇总数据 var componentCount = baseQuery.Count(x => x.TypeStr == "预制组件"); var partCount = baseQuery.Count(x => x.TypeStr == "预制散件"); // 更新汇总标签 lblSummary1.Text = $"预制组件数量:{componentCount}"; lblSummary2.Text = $"预制散件数量:{partCount}"; } catch (Exception ex) { // 出现异常时显示默认值 lblSummary1.Text = "预制组件数量:0"; lblSummary2.Text = "预制散件数量:0"; } } /// /// 查询数据 /// /// private List BindData(int pageIndex, int pageSize, out int totalCount) { var baseQuery=from x in Funs.DB.View_HJGL_InstallData select x; if (tvControlItem.SelectedNode.CommandName.Split('|').Length == 2) { baseQuery = baseQuery.Where(x => x.UnitWorkId == tvControlItem.SelectedNode.NodeID); } else if (tvControlItem.SelectedNode.CommandName == "流水段") { baseQuery = baseQuery.Where(x => x.UnitWorkId == tvControlItem.SelectedNode.ParentNode.NodeID && x.FlowingSection == tvControlItem.SelectedNode.Text); } if (!string.IsNullOrEmpty(txtPipelineCode2.Text)) { baseQuery = baseQuery.Where(x => x.PipelineCode.Contains(txtPipelineCode2.Text.Trim())); } if (!string.IsNullOrEmpty(txtPipelineComponentCode.Text)) { baseQuery = baseQuery.Where(x => x.Code.Contains(txtPipelineComponentCode.Text.Trim())); } if (!string.IsNullOrEmpty(drpTypeStr.SelectedValue)) { baseQuery = baseQuery.Where(x => x.TypeStr.Contains(drpTypeStr.SelectedValue)); } //if (!string.IsNullOrEmpty(drpFlowingSection.SelectedValue) && drpFlowingSection.SelectedValue != Const._Null) //{ // strSql += " AND cte.FlowingSection =@FlowingSection"; // listStr.Add(new SqlParameter("@FlowingSection", drpFlowingSection.SelectedValue.ToString())); //} if (!string.IsNullOrEmpty(txtPipelineCode.Text)) { baseQuery = baseQuery.Where(x => x.PipelineCode.Contains(txtPipelineCode.Text.Trim())); } baseQuery = baseQuery.OrderBy(x => x.PipelineCode).ThenBy(x => x.Code); totalCount = baseQuery.Count(); GridDataTable = baseQuery; // 分页保护 if (pageIndex <= 0) pageIndex = 1; if (pageSize <= 0) pageSize = 10; var query = baseQuery.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); return query; } #endregion #region 分页排序 #region 页索引改变事件 /// /// 页索引改变事件 /// /// /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { BindGrid(); } #endregion #region 排序 /// /// 排序 /// /// /// protected void Grid1_Sort(object sender, GridSortEventArgs e) { BindGrid(); } #endregion #region 分页选择下拉改变事件 /// /// 分页选择下拉改变事件 /// /// /// protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); BindGrid(); } #endregion #endregion #region 查询事件 protected void btnSearch_Click(object sender, EventArgs e) { BindGrid(); } #endregion #region 刷新页面 /// /// 查询 /// /// /// //protected void TextBox_TextChanged(object sender, EventArgs e) //{ // this.BindGrid(); //} protected void btnTreeFind_Click1(object sender, EventArgs e) { this.InitTreeMenu(); this.BindGrid(); } #endregion public string ConvertProductionState(object state) { string StateName = string.Empty; if (state != null) { if (!string.IsNullOrEmpty(state.ToString())) { string txt = HJGL_PipelineComponentService.GetProductionState().FirstOrDefault(x => x.Value == state.ToString()).Text; return txt; } } return StateName; } /// /// 导出 /// /// /// protected void btnOut_Click(object sender, EventArgs e) { if (GridDataTable != null) { var q = (from x in GridDataTable select new { 管线号 = x.PipelineCode, 类型 = x.TypeStr, 编号 = x.Code, 预制散件材料描述 = (x.Matdef=="" || x.Matdef==null)?"-":x.Matdef, 数量 = x.Number??1, 所在包装编号 = x.PackagingCode, 车次 = x.TrainNumber, 流水段 = x.FlowingSection }); string path = Funs.RootPath + @"File\Excel\Temp\PrePipelineInstallList.xlsx"; path = path.Replace(".xlsx", string.Format("{0:yyyy-MM-dd}", DateTime.Now) + ".xlsx"); MiniExcel.SaveAs(path, q); string fileName = $"安装清单-" + this.tvControlItem.SelectedNode.Text + "-" + string.Format("{0:yyyy-MM-dd}", DateTime.Now) + ".xlsx"; FileInfo info = new FileInfo(path); long fileSize = info.Length; System.Web.HttpContext.Current.Response.Clear(); System.Web.HttpContext.Current.Response.ContentType = "application/x-zip-compressed"; System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); System.Web.HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString()); System.Web.HttpContext.Current.Response.TransmitFile(path, 0, fileSize); System.Web.HttpContext.Current.Response.Flush(); System.Web.HttpContext.Current.Response.Close(); File.Delete(path); } } } }