using BLL; using MiniExcelLibs; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Web; namespace FineUIPro.Web.HJGL.PreDesign { public partial class PrePipeline : PageBase { public int pageSize = 20; public static DataTable GridDataTable = new DataTable(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString(); this.InitTreeMenu();//加载树 HJGL_PipelineComponentService.InitMainItemDownList(drpState, true); HJGL_PipelineComponentService.InitMainItemDownProductionStateList(drpProductionState, true); var pipeline = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId select x.FlowingSection).Distinct().ToList(); this.drpFlowingSection.DataTextField = "Value"; this.drpFlowingSection.DataValueField = "Value"; this.drpFlowingSection.DataSource = pipeline; this.drpFlowingSection.DataBind(); Funs.FineUIPleaseSelect(drpFlowingSection); } } #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).Count(); var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId); TreeNode tn1 = new TreeNode(); tn1.NodeID = q.UnitWorkId; tn1.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线"; 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).Count(); var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId); TreeNode tn2 = new TreeNode(); tn2.NodeID = q.UnitWorkId; tn2.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线"; 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 pipeline = new List(); var pipelines = from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.PipeArea == "1" select x; pipeline = (from x in pipelines where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == node.NodeID && x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()) orderby x.PipelineCode select x).ToList(); int pageindex = int.Parse(node.CommandName.Split('|')[0]); int pageCount = int.Parse(node.CommandName.Split('|')[1]); if (pageindex <= pageCount) { pipeline = pipeline.Skip(pageSize * (pageindex - 1)).Take(pageSize).ToList(); foreach (var item in pipeline) { 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.ToolTip = "管线号【组件数】"; newNode.CommandName = "管线"; newNode.NodeID = item.PipelineId; newNode.EnableClickEvent = true; node.Nodes.Add(newNode); } if (pageindex < pageCount) { TreeNode newNode = new TreeNode(); newNode.Text = "加载"; 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.Split('|').Length == 2) { this.hdUnitWorkId.Text = this.tvControlItem.SelectedNodeID; WeldingDailyService.InitDownListByUnitWortId(drpWeldingDailyCode, true, this.tvControlItem.SelectedNodeID); } else if (e.CommandName == "管线") { Model.HJGL_Pipeline pipeline = BLL.PipelineService.GetPipelineByPipelineId(this.tvControlItem.SelectedNodeID); this.hdUnitWorkId.Text = string.Empty; if (pipeline != null) { this.hdUnitWorkId.Text = this.tvControlItem.SelectedNode.ParentNode.NodeID; } } else if (e.CommandName == "加载") { string CommandName = e.Node.ParentNode.CommandName; e.Node.ParentNode.CommandName = (int.Parse(CommandName.Split('|')[0]) + 1) + "|" + int.Parse(CommandName.Split('|')[1]); TreeNode treeNode = e.Node.ParentNode; treeNode.Nodes.Remove(e.Node); BindNodes(e.Node.ParentNode); } this.BindGrid(); } #endregion #region 数据绑定 /// /// 数据绑定 /// private void BindGrid() { if (tvControlItem.SelectedNode == null) return; string strSql = @" SELECT distinct com.PipelineComponentId,com.PipelineComponentCode,com.BoxNumber,com.Remark, com.PipelineId, punit.UnitName AS PreUnit,aunit.UnitName AS AssembleUnit,com.IsPrint, com.QRCode,com.State,com.ProductionState,pipe.PlanStartDate,pipe.FlowingSection,com.DrawingName,com.ReceiveDate, person.PersonName FROM HJGL_Pipeline_Component com LEFT JOIN HJGL_Pipeline pipe ON pipe.PipelineId =com.PipelineId LEFT JOIN dbo.Base_Unit punit ON punit.UnitId=com.PreUnit LEFT JOIN dbo.Base_Unit aunit ON aunit.UnitId=com.AssembleUnit LEFT JOIN Person_Persons person on com.ReceiveMan=person.PersonId LEFT JOIN HJGL_WeldJoint joint on joint.PipelineId =com.PipelineId WHERE 1=1 "; List listStr = new List(); if (tvControlItem.SelectedNode.CommandName.Split('|').Length == 2) { strSql += " and pipe.UnitWorkId =@UnitWorkId"; listStr.Add(new SqlParameter("@UnitWorkId", this.tvControlItem.SelectedNodeID)); } else if (tvControlItem.SelectedNode.CommandName == "管线") { strSql += " and com.PipelineId = @PipelineId "; listStr.Add(new SqlParameter("@PipelineId", this.tvControlItem.SelectedNodeID)); } if (drpWeldingDailyCode.SelectedValue != Const._Null && !string.IsNullOrEmpty(drpWeldingDailyCode.SelectedValue)) { strSql += " and joint.WeldingDailyId = @WeldingDailyId "; listStr.Add(new SqlParameter("@WeldingDailyId", drpWeldingDailyCode.SelectedValue)); } if (!string.IsNullOrEmpty(txtPipelineComponentCode.Text)) { strSql += " AND com.PipelineComponentCode like @PipelineComponentCode"; listStr.Add(new SqlParameter("@PipelineComponentCode", "%" + this.txtPipelineComponentCode.Text.Trim() + "%")); } if (drpState.SelectedValue != Const._Null) { strSql += " AND com.State =@State"; listStr.Add(new SqlParameter("@State", drpState.SelectedValue)); } if (drpProductionState.SelectedValue != Const._Null) { strSql += " AND com.ProductionState =@ProductionState"; listStr.Add(new SqlParameter("@ProductionState", drpProductionState.SelectedValue.ToString())); } if (!string.IsNullOrEmpty(drpFlowingSection.SelectedValue) && drpFlowingSection.SelectedValue != Const._Null) { strSql += " AND pipe.FlowingSection =@FlowingSection"; listStr.Add(new SqlParameter("@FlowingSection", drpFlowingSection.SelectedValue.ToString())); } // 过滤组件编号值为"裕-量"的行 strSql += " AND com.PipelineComponentCode != @ExcludeYuliang"; listStr.Add(new SqlParameter("@ExcludeYuliang", "裕-量")); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); GridDataTable = tb; // 2.获取当前分页数据 Grid1.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); } #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 管线组件信息 维护事件 /// /// Grid双击事件 /// /// /// protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e) { if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId, BLL.Const.HJGL_PrePipelineMenuId, BLL.Const.BtnModify)) { Model.HJGL_Pipeline pipeline = BLL.PipelineService.GetPipelineByPipelineId(this.tvControlItem.SelectedNodeID); PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("PrePipelineEdit.aspx?PipelineComponentId={0}", Grid1.SelectedRowID, "编辑 - "))); } else { ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning); } } protected void btnPrint_Click(object sender, EventArgs e) { if (Print(Grid1.SelectedRowIDArray)) { HJGL_PipelineComponentService.UpdateIsPrint(Grid1.SelectedRowIDArray); //打印后修改打印状态 } } private bool Print(string[] PipelineComponentId) { BLL.FastReportService.ResetData(); var result = HJGL_PipelineComponentService.GetPrintModelByPipelineComponentIds(PipelineComponentId, null, false); var tb = LINQToDataTable(result); if (tb != null && tb.Rows.Count > 0) { tb.TableName = "Table1"; } else { ShowNotify("请查看组件是否上传二维码!", MessageBoxIcon.Question); return false; } BLL.FastReportService.AddFastreportTable(tb); string initTemplatePath = ""; string rootPath = Server.MapPath("~/"); initTemplatePath = "File\\Fastreport\\组件打印.frx"; if (File.Exists(rootPath + initTemplatePath)) { PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("~/Controls/Fastreport.aspx?ReportPath={0}", rootPath + initTemplatePath))); } return true; } /// /// 增加焊口信息 /// /// /// protected void btnNew_Click(object sender, EventArgs e) { if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId, Const.HJGL_PrePipelineMenuId, Const.BtnAdd)) { Model.HJGL_Pipeline pipeline = BLL.PipelineService.GetPipelineByPipelineId(this.tvControlItem.SelectedNodeID); if (pipeline != null) { PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("PrePipelineEdit.aspx?PipelineId={0}", this.tvControlItem.SelectedNodeID, "新增 - "))); } else { ShowNotify("请选择管线!", MessageBoxIcon.Warning); } } else { ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning); } } /// /// 批量增加焊口信息 /// /// /// protected void btnBatchAdd_Click(object sender, EventArgs e) { if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId, Const.HJGL_PrePipelineMenuId, Const.BtnAdd)) { Model.HJGL_Pipeline pipeline = BLL.PipelineService.GetPipelineByPipelineId(this.tvControlItem.SelectedNodeID); if (pipeline != null) { PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("PrePipelineBatchEdit.aspx?PipelineId={0}", this.tvControlItem.SelectedNodeID, "新增 - "))); } else { ShowNotify("请选择管线!", MessageBoxIcon.Warning); } } else { ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning); } } /// /// 删除按钮 /// /// /// protected void btnDelete_Click(object sender, EventArgs e) { if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId, Const.HJGL_PrePipelineMenuId, Const.BtnDelete)) { if (Grid1.SelectedRowIndexArray.Length == 0) { Alert.ShowInTop("请至少选择一条记录", MessageBoxIcon.Warning); return; } foreach (int rowIndex in Grid1.SelectedRowIndexArray) { string rowID = Grid1.DataKeys[rowIndex][0].ToString(); BLL.HJGL_PipelineComponentService.DeletePipelineComponent(rowID); ShowNotify("删除成功!", MessageBoxIcon.Success); } //this.InitTreeMenu();//加载树 this.BindGrid(); } else { Alert.ShowInTop("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning); } } protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "PreviewQRCode") { var ID = e.RowID; var q = HJGL_PipelineComponentService.GetPipelineComponentById(ID); string path = ""; if (!string.IsNullOrEmpty(q.QRCode)) { path = BLL.CreateQRCodeService.CreateCode_Simple(q.QRCode, ID); if (!string.IsNullOrEmpty(path)) { string filepath = Funs.SGGLUrl + path.Replace("\\", "//"); ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", ""); } } } } protected void btnSearch_Click(object sender, EventArgs e) { BindGrid(); } #endregion #region 关闭弹出窗口及刷新页面 /// /// 关闭弹出窗口 /// /// /// protected void Window1_Close(object sender, WindowCloseEventArgs e) { //this.InitTreeMenu();//加载树 this.BindGrid(); } /// /// 查询 /// /// /// protected void TextBox_TextChanged(object sender, EventArgs e) { this.BindGrid(); } protected void btnTreeFind_Click1(object sender, EventArgs e) { this.InitTreeMenu(); } #endregion /// /// 搜索 /// /// /// public string ConvertImageUrlByImage(object str, object id) { string path = string.Empty; if (!string.IsNullOrEmpty(str.ToString())) { path = BLL.CreateQRCodeService.CreateCode_Simple(str.ToString(), id.ToString()); path = HttpUtility.HtmlDecode(BLL.UploadAttachmentService.ShowImage("../../", path)); } return path; } public string ConvertState(object state) { string StateName = string.Empty; if (state != null) { if (!string.IsNullOrEmpty(state.ToString())) { string txt = HJGL_PipelineComponentService.GetState().FirstOrDefault(x => x.Value == state.ToString()).Text; return txt; } } return StateName; } 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 btnImportQRCode_Click(object sender, EventArgs e) { PageContext.RegisterStartupScript(Window3.GetShowReference(String.Format("PrePipelineQRCodeIn.aspx?", "导入 - "))); } protected void btnSinglePreview_Click(object sender, EventArgs e) { //string httpUrl = @"FileUpload\HJGL_DataImport\095e9691-99c2-4f70-8e67-e70c8fa6be9c\2022-06\管道焊接工作记录.pdf"; //var newurl = Funs.SGGLUrl + httpUrl.Replace(Funs.RootPath, ""); var id = Grid1.SelectedRowID; if (string.IsNullOrEmpty(id)) { ShowNotify("请选择相对应的管道预制加工图", MessageBoxIcon.Warning); return; } var SingleName = (from x in Funs.DB.HJGL_Pipeline_Component where x.PipelineComponentId == id select (x.DrawingName)).FirstOrDefault(); var filemodel = BLL.HJGL_DataImportService.GetLatestFileByFileName(SingleName, "3", this.CurrUser.LoginProjectId); if (filemodel != null) { string httpUrl = filemodel.FilePath; PageContext.RegisterStartupScript(Window4.GetShowReference(String.Format("~/AttachFile/Look.aspx?fileUrl={0}", httpUrl, "查看 -"))); } else { ShowNotify("请上传相关管道预制加工图", MessageBoxIcon.Warning); return; } } protected void btnAccept_Click(object sender, EventArgs e) { if (Grid1.SelectedRowIDArray.Length > 0) { foreach (var item in Grid1.SelectedRowIDArray) { var model = HJGL_PipelineComponentService.GetPipelineComponentById(item); if (model.ProductionState == 2) { BLL.APIPipelineComponentService.GetComponentConfirmArrival(PipelineComponentId: item, this.CurrUser.PersonId, ""); ; } } ShowNotify("操作成功", MessageBoxIcon.Success); BindGrid(); } else { ShowNotify("请选择需要验收的数据", MessageBoxIcon.Warning); } } protected void btnRectification_Click(object sender, EventArgs e) { if (Grid1.SelectedRowIDArray.Length > 0) { foreach (var item in Grid1.SelectedRowIDArray) { var model = HJGL_PipelineComponentService.GetPipelineComponentById(item); if (model.State == HJGL_PipelineComponentService.StatePenRec) { model.State = HJGL_PipelineComponentService.StateRec; HJGL_PipelineComponentService.UpdatePipelineComponent(model); } } ShowNotify("操作成功", MessageBoxIcon.Success); BindGrid(); } else { ShowNotify("请选择需要整改的数据", MessageBoxIcon.Warning); } } protected void btnOut_Click(object sender, EventArgs e) { if (GridDataTable != null) { var q = (from x in GridDataTable.AsEnumerable() select new { 组件编号 = x.Field("PipelineComponentCode"), 物流箱号 = x.Field("BoxNumber"), 组件状态 = ConvertState(x.Field("State")), 生产状态 = ConvertProductionState(x.Field("ProductionState")), 管线计划安装日期 = x.Field("PlanStartDate"), 预制图纸名称 = x.Field("DrawingName"), 验收人 = x.Field("PersonName"), 验收时间 = x.Field("ReceiveDate"), }); string path = Funs.RootPath + @"File\Excel\Temp\PrePipeline.xlsx"; path = path.Replace(".xlsx", string.Format("{0:yyyy-MM-dd-HH-mm}", DateTime.Now) + ".xlsx"); MiniExcel.SaveAs(path, q); string fileName = "组件信息.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); } } } }