using BLL; using Model; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace FineUIPro.Web.TestRun.BeforeTestRun { public partial class SysPipingDeviceImport : PageBase { /// /// 点击树状主键 /// public string TreePreRunId { get { return (string)ViewState["TreePreRunId"]; } set { ViewState["TreePreRunId"] = value; } } /// /// 子系统主键 /// public string SsubSystemId { get { return (string)ViewState["SsubSystemId"]; } set { ViewState["SsubSystemId"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.InitTreeMenu();//加载树 TabStrip1.ActiveTabIndex = 0; } } #region 加载树 /// /// 加载树 /// private void InitTreeMenu() { this.tvControlItem.Nodes.Clear(); TreeNode rootNode = new TreeNode(); rootNode.Text = "系统划分"; rootNode.NodeID = "0"; rootNode.Expanded = true; rootNode.ToolTip = ""; rootNode.EnableClickEvent = true; this.tvControlItem.Nodes.Add(rootNode); var allPreRunLs = Funs.DB.PreRun_SysDevice.Where(p => p.ProjectId == this.CurrUser.LoginProjectId).ToList(); var onePreRunLs = allPreRunLs.Where(p => p.PreRunLevel == 1).OrderBy(x => x.Sort); foreach (var item in onePreRunLs) { TreeNode rootUnitNode = new TreeNode();//定义根节点 rootUnitNode.NodeID = item.PreRunId; rootUnitNode.Text = item.PreRunName; rootUnitNode.ToolTip = item.PreRunName; rootUnitNode.CommandName = ""; rootUnitNode.EnableClickEvent = true; rootUnitNode.EnableExpandEvent = true; rootNode.Nodes.Add(rootUnitNode); rootUnitNode.Expanded = true; var otherPreRunls = allPreRunLs.Where(p => p.PreRunLevel != 1).ToList(); this.BindNodes(rootUnitNode, otherPreRunls, item.PreRunId); } } /// /// 绑定树节点 /// private void BindNodes(TreeNode node, List list, string parentId) { var itemList = list.Where(p => p.ParentId == parentId).OrderBy(x => x.Sort).ToList(); if (itemList.Count > 0) { foreach (var item in itemList) { TreeNode newNode = new TreeNode(); newNode.Text = item.PreRunName; newNode.NodeID = item.PreRunId; newNode.ToolTip = item.PreRunName; newNode.CommandName = ""; newNode.EnableClickEvent = true; node.Nodes.Add(newNode); BindNodes(newNode, list, item.PreRunId); } } } /// /// 数加载 /// protected void tvControlItem_NodeExpand(object sender, TreeNodeEventArgs e) { if (e.Node.Nodes != null) { e.Node.Nodes.Clear(); } var allPreRunLs = Funs.DB.PreRun_SysDevice.Where(p => p.ProjectId == this.CurrUser.LoginProjectId).ToList(); this.BindNodes(e.Node, allPreRunLs, e.NodeID); } /// /// 点击TreeView /// /// /// protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) { this.TreePreRunId = tvControlItem.SelectedNodeID; this.PageBase(); } /// /// 数据显示 /// public void PageBase() { zxtsc.Hidden = true; zxtsxt.Hidden = true; zz.Hidden = true; gx.Hidden = true; sxt.Hidden = true; sszxt.Hidden = true; var model = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == this.TreePreRunId); if (model != null) { var ids = new List(); if (!string.IsNullOrWhiteSpace(model.InstallationId)) ids.Add(model.InstallationId); if (!string.IsNullOrWhiteSpace(model.ProcessesId)) ids.Add(model.ProcessesId); if (!string.IsNullOrWhiteSpace(model.SystemId)) ids.Add(model.SystemId); if (!string.IsNullOrWhiteSpace(model.SubsystemId)) ids.Add(model.SubsystemId); var list = Funs.DB.PreRun_SysDevice.Where(p => ids.Contains(p.PreRunId)).ToList(); if (list.Count(p => p.PreRunLevel == 1) > 0) { zz.Hidden = false; lblzzbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 1).PreRunCode; lblzzmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 1).PreRunName; } if (list.Count(p => p.PreRunLevel == 2) > 0) { gx.Hidden = false; lblgxmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 2).PreRunName; lblgxbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 2).PreRunCode; } if (list.Count(p => p.PreRunLevel == 3) > 0) { sxt.Hidden = false; lblsxtmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 3).PreRunName; lblsxtbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 3).PreRunCode; } if (list.Count(p => p.PreRunLevel == 4) > 0) { sszxt.Hidden = false; lblszxtmc.Text = list.FirstOrDefault(p => p.PreRunLevel == 4).PreRunName; lblszxtbm.Text = list.FirstOrDefault(p => p.PreRunLevel == 4).PreRunCode; } //判断是否为S系统 if (model.PreRunLevel == 3) { zxtsc.Hidden = false; ZxtgdBrid(); } //判断是否为SS系统 if (model.PreRunLevel == 4) { hidSystemId.Text = model.SystemId; zxtsxt.Hidden = false; SubPropertyBrid(); } } } #endregion #region S系统管道一览表导入 /// /// 绑定管道号 /// public void ZxtgdBrid() { string strSql = @"select * from PreRun_PropertySysPiping where ProjectId=@ProjectId and SystemId=@SystemId order by Sort asc"; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); listStr.Add(new SqlParameter("@SystemId", this.tvControlItem.SelectedNodeID)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); GridZxtgd.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(GridZxtgd, tb); GridZxtgd.DataSource = table; GridZxtgd.DataBind(); TabStrip1.ActiveTabIndex = 0; } /// /// 行按钮事件 /// protected void GridZxtgd_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { string rowID = e.RowID; var model = Funs.DB.PreRun_PropertySysPiping.FirstOrDefault(p => p.PropertyId == rowID); Funs.DB.PreRun_PropertySysPiping.DeleteOnSubmit(model); Funs.DB.SubmitChanges(); ZxtgdBrid(); ShowNotify("删除成功!"); } } /// /// 分页 /// protected void GridZxtgd_PageIndexChange(object sender, GridPageEventArgs e) { GridZxtgd.PageIndex = e.NewPageIndex; ZxtgdBrid(); } /// /// 排序 /// protected void GridZxtgd_Sort(object sender, GridSortEventArgs e) { GridZxtgd.SortDirection = e.SortDirection; GridZxtgd.SortField = e.SortField; ZxtgdBrid(); } /// /// 分页下拉框事件 /// protected void ddlZxtgdPageSize_SelectedIndexChanged(object sender, EventArgs e) { GridZxtgd.PageSize = Convert.ToInt32(ddlZxtgdPageSize.SelectedValue); ZxtgdBrid(); } /// /// 导入管道一览表 /// protected void btnZxtgdImport_Click(object sender, EventArgs e) { try { if (this.fileData.HasFile == false) { ShowNotify("请选择excel文件!", MessageBoxIcon.Warning); return; } string IsXls = Path.GetExtension(this.fileData.FileName).ToString().Trim().ToLower(); if (IsXls != ".xls" && IsXls != ".xlsx") { fileData.Reset(); ShowNotify("excel文件类型错误!", MessageBoxIcon.Warning); return; } string rootPath = Server.MapPath("~/"); string initFullPath = rootPath + Const.ExcelUrl; if (!Directory.Exists(initFullPath)) { Directory.CreateDirectory(initFullPath); } //指定上传文件名称 string fileUrl = BLL.Funs.GetNewFileName() + IsXls; //上传文件路径 string filePath = initFullPath + fileUrl; //文件上传服务器 this.fileData.PostedFile.SaveAs(filePath); //文件上传服务器后的名称 string fileName = rootPath + Const.ExcelUrl + fileUrl; //读取Excel DataSet ds = NPOIHelper.ExcelToDataSet(fileName, out string message, false, false); if (ds == null) { fileData.Reset(); ShowNotify("模板错误,请从系统下载正确的模板!", MessageBoxIcon.Warning); return; } if (!string.IsNullOrWhiteSpace(message)) { ShowNotify(message, MessageBoxIcon.Warning); return; } //移除不正确的表格 List removeAtt = new List(); for (int i = 0; i < ds.Tables.Count; i++) { var itemTb = ds.Tables[i]; var fileVerify = PropertyVerifyFile(itemTb); if (!fileVerify) removeAtt.Add(ds.Tables[i].TableName); } if (removeAtt.Count > 0) { foreach (var itemR in removeAtt) { ds.Tables.Remove(itemR); } } if (ds.Tables.Count == 0) { fileData.Reset(); ShowNotify("Excel模板格式不正确!", MessageBoxIcon.Warning); return; } var sortnum = Funs.DB.PreRun_PropertySysPiping.Count(x => x.SystemId == tvControlItem.SelectedNodeID); List list = new List(); for (int i = 0; i < ds.Tables.Count; i++) { var itemTb = ds.Tables[i]; if (itemTb.Rows.Count > 6) { for (int j = 6; j < itemTb.Rows.Count; j++) { if (string.IsNullOrWhiteSpace(itemTb.Rows[j][1].ToString()) || string.IsNullOrWhiteSpace(itemTb.Rows[j][8].ToString())) continue; PreRun_PropertySysPiping model = new PreRun_PropertySysPiping(); sortnum++; model.PropertyId = Guid.NewGuid().ToString(); model.SystemId = tvControlItem.SelectedNodeID; model.ProjectId = this.CurrUser.LoginProjectId; model.PipingCode = itemTb.Rows[j][1].ToString(); model.Diameter = itemTb.Rows[j][8].ToString(); model.MaterialLevel = itemTb.Rows[j][10].ToString(); model.AdiabatType = itemTb.Rows[j][15].ToString(); model.AdiabatThickness = itemTb.Rows[j][18].ToString(); model.MediumState = itemTb.Rows[j][20].ToString(); model.DrawingNo = itemTb.Rows[j][22].ToString(); model.PipingStart = itemTb.Rows[j][29].ToString(); model.PipingEnd = itemTb.Rows[j][35].ToString(); model.PipingLevel = itemTb.Rows[j][41].ToString(); model.NormalTemperature = itemTb.Rows[j][43].ToString(); model.NormalPressure = itemTb.Rows[j][45].ToString(); model.DesignTemperature = itemTb.Rows[j][46].ToString(); model.DesignPressure = itemTb.Rows[j][48].ToString(); model.PaintLevel = itemTb.Rows[j][50].ToString(); model.Remark = itemTb.Rows[j][53].ToString(); model.AddUser = this.CurrUser.UserId; model.AddTime = DateTime.Now; model.Sort = sortnum; list.Add(model); } } } if (list.Count > 0) { //获取已经存在的数据 var pipingCodes = list.ConvertAll(x => x.PipingCode); List addList = new List(); var existPropertys = Funs.DB.PreRun_PropertySysPiping.Where(x => pipingCodes.Contains(x.PipingCode) && x.SystemId == tvControlItem.SelectedNodeID && x.ProjectId == this.CurrUser.LoginProjectId).ToList(); if (existPropertys.Count == 0) { addList = list; } else { var existTags = existPropertys.ConvertAll(x => x.PipingCode); foreach (var item in list) { if (existTags.Count(a => a == item.PipingCode) > 0) { var upModel = existPropertys.FirstOrDefault(a => a.PipingCode == item.PipingCode); upModel.Diameter = item.Diameter; upModel.MaterialLevel = item.MaterialLevel; upModel.AdiabatType = item.AdiabatType; upModel.AdiabatThickness = item.AdiabatThickness; upModel.MediumState = item.MediumState; upModel.DrawingNo = item.DrawingNo; upModel.PipingStart = item.PipingStart; upModel.PipingEnd = item.PipingEnd; upModel.PipingLevel = item.PipingLevel; upModel.NormalTemperature = item.NormalTemperature; upModel.NormalPressure = item.NormalPressure; upModel.DesignTemperature = item.DesignTemperature; upModel.DesignPressure = item.DesignPressure; upModel.PaintLevel = item.PaintLevel; upModel.Remark = item.Remark; Funs.DB.SubmitChanges(); } else { addList.Add(item); } } } if (addList.Count > 0) { Funs.DB.PreRun_PropertySysPiping.InsertAllOnSubmit(addList); Funs.DB.SubmitChanges(); } } else { fileData.Reset(); ShowNotify("Excel模板无数据!", MessageBoxIcon.Warning); return; } fileData.Reset(); ZxtgdBrid(); ShowNotify("导入成功!", MessageBoxIcon.Success); } catch (Exception ex) { fileData.Reset(); ShowNotify(ex.Message, MessageBoxIcon.Warning); } } /// /// 管道一览表保存 /// protected void btnZxtgdSave_Click(object sender, EventArgs e) { try { JArray mergedData = GridZxtgd.GetMergedData(); foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); var propertyId = this.GridZxtgd.Rows[i].DataKeys[0].ToString(); PreRun_PropertySysPiping model = Funs.DB.PreRun_PropertySysPiping.FirstOrDefault(x => x.PropertyId == propertyId); if (model == null) continue; model.PipingCode = values.Value("PipingCode"); model.Diameter = values.Value("Diameter"); model.MaterialLevel = values.Value("MaterialLevel"); model.AdiabatType = values.Value("AdiabatType"); model.AdiabatThickness = values.Value("AdiabatThickness"); model.MediumState = values.Value("MediumState"); model.DrawingNo = values.Value("DrawingNo"); model.PipingStart = values.Value("PipingStart"); model.PipingEnd = values.Value("PipingEnd"); model.PipingLevel = values.Value("PipingLevel"); model.NormalTemperature = values.Value("NormalTemperature"); model.NormalPressure = values.Value("NormalPressure"); model.DesignTemperature = values.Value("DesignTemperature"); model.DesignPressure = values.Value("DesignPressure"); model.PaintLevel = values.Value("PaintLevel"); model.Remark = values.Value("Remark"); Funs.DB.SubmitChanges(); } ZxtgdBrid(); ShowNotify("修改成功!"); } catch (Exception ex) { ShowNotify(ex.Message, MessageBoxIcon.Error); } } /// /// 管道模板下载 /// protected void btnGdDownLoad_Click(object sender, EventArgs e) { PageContext.RegisterStartupScript(Confirm.GetShowReference("是否确认下载模板?", String.Empty, MessageBoxIcon.Question, PageManager1.GetCustomEventReference(false, "Confirmgd_OK"), PageManager1.GetCustomEventReference("Confirm_Cancel"))); } #endregion #region S系统工艺设备一览表导入 /// /// 绑定工艺设备 /// public void ZxtgyBrid() { string strSql = @"select * from PreRun_TechnologySysPiping where ProjectId=@ProjectId and SystemId=@SystemId order by Sort asc"; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); listStr.Add(new SqlParameter("@SystemId", this.tvControlItem.SelectedNodeID)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); GridZxtgy.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(GridZxtgy, tb); GridZxtgy.DataSource = table; GridZxtgy.DataBind(); TabStrip1.ActiveTabIndex = 1; } /// /// 分页 /// protected void GridZxtgy_PageIndexChange(object sender, GridPageEventArgs e) { GridZxtgy.PageIndex = e.NewPageIndex; ZxtgyBrid(); } /// /// 排序 /// protected void GridZxtgy_Sort(object sender, GridSortEventArgs e) { GridZxtgy.SortDirection = e.SortDirection; GridZxtgy.SortField = e.SortField; ZxtgyBrid(); } /// /// 行点击事件 /// protected void GridZxtgy_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { string rowID = e.RowID; var model = Funs.DB.PreRun_TechnologySysPiping.FirstOrDefault(p => p.TechnologyId == rowID); Funs.DB.PreRun_TechnologySysPiping.DeleteOnSubmit(model); Funs.DB.SubmitChanges(); ZxtgyBrid(); ShowNotify("删除成功!"); } } /// /// 分页下拉框事件 /// protected void ddlZxtgyPageSize_SelectedIndexChanged(object sender, EventArgs e) { GridZxtgy.PageSize = Convert.ToInt32(ddlZxtgyPageSize.SelectedValue); ZxtgyBrid(); } /// /// 工艺设备导入 /// protected void btnZxtgyImport_Click(object sender, EventArgs e) { try { if (this.filegyData.HasFile == false) { ShowNotify("请选择excel文件!", MessageBoxIcon.Warning); return; } string IsXls = Path.GetExtension(this.filegyData.FileName).ToString().Trim().ToLower(); if (IsXls != ".xls" && IsXls != ".xlsx") { filegyData.Reset(); ShowNotify("excel文件类型错误!", MessageBoxIcon.Warning); return; } string rootPath = Server.MapPath("~/"); string initFullPath = rootPath + Const.ExcelUrl; if (!Directory.Exists(initFullPath)) { Directory.CreateDirectory(initFullPath); } //指定上传文件名称 string fileUrl = BLL.Funs.GetNewFileName() + IsXls; //上传文件路径 string filePath = initFullPath + fileUrl; //文件上传服务器 this.filegyData.PostedFile.SaveAs(filePath); //文件上传服务器后的名称 string fileName = rootPath + Const.ExcelUrl + fileUrl; //读取Excel DataSet ds = NPOIHelper.ExcelToDataSet(fileName, out string message, false, false); if (ds == null) { filegyData.Reset(); ShowNotify("模板错误,请从系统下载正确的模板!", MessageBoxIcon.Warning); return; } if (!string.IsNullOrWhiteSpace(message)) { filegyData.Reset(); ShowNotify(message, MessageBoxIcon.Warning); return; } //移除不正确的表格 List removeAtt = new List(); for (int i = 0; i < ds.Tables.Count; i++) { var itemTb = ds.Tables[i]; var fileVerify = TechnologyVerifyFile(itemTb); if (!fileVerify) removeAtt.Add(ds.Tables[i].TableName); } if (removeAtt.Count > 0) { foreach (var itemR in removeAtt) { ds.Tables.Remove(itemR); } } if (ds.Tables.Count == 0) { filegyData.Reset(); ShowNotify("Excel模板格式不正确!", MessageBoxIcon.Warning); return; } var sortnum = Funs.DB.PreRun_TechnologySysPiping.Count(x => x.SystemId == tvControlItem.SelectedNodeID); List list = new List(); for (int i = 0; i < ds.Tables.Count; i++) { var itemTb = ds.Tables[i]; if (itemTb.Rows.Count > 5) { string lastTagNumber = string.Empty; for (int j = 5; j < itemTb.Rows.Count; j++) { if (string.IsNullOrWhiteSpace(itemTb.Rows[j][1].ToString()) && string.IsNullOrWhiteSpace(itemTb.Rows[j][4].ToString()) && string.IsNullOrWhiteSpace(itemTb.Rows[j][9].ToString())) continue; if (!string.IsNullOrWhiteSpace(itemTb.Rows[j][1].ToString()) && string.IsNullOrWhiteSpace(itemTb.Rows[j][4].ToString()) && !string.IsNullOrWhiteSpace(itemTb.Rows[j][9].ToString())) continue; PreRun_TechnologySysPiping model = new PreRun_TechnologySysPiping(); if (!string.IsNullOrWhiteSpace(itemTb.Rows[j][4].ToString())) { sortnum++; model.TechnologyId = Guid.NewGuid().ToString(); model.SystemId = tvControlItem.SelectedNodeID; model.ProjectId = this.CurrUser.LoginProjectId; model.TagNumber = itemTb.Rows[j][4].ToString(); model.NameSpecifications = itemTb.Rows[j][9].ToString(); model.DrawingNo = itemTb.Rows[j][25].ToString(); model.Materials = itemTb.Rows[j][33].ToString(); model.NumOperate = itemTb.Rows[j][42].ToString(); model.NumStandby = itemTb.Rows[j][44].ToString(); model.WeightSingle = itemTb.Rows[j][46].ToString(); model.WeightTotal = itemTb.Rows[j][49].ToString(); model.Remark = itemTb.Rows[j][52].ToString(); model.AddUser = this.CurrUser.UserId; model.AddTime = DateTime.Now; model.Sort = sortnum; list.Add(model); lastTagNumber = model.TagNumber; } else { if (list.Count(x => x.TagNumber == lastTagNumber) > 0) { if (!string.IsNullOrWhiteSpace(itemTb.Rows[j][9].ToString())) { list.FirstOrDefault(x => x.TagNumber == lastTagNumber).NameSpecifications += "\n" + itemTb.Rows[j][9].ToString(); } if (!string.IsNullOrWhiteSpace(itemTb.Rows[j][25].ToString())) { list.FirstOrDefault(x => x.TagNumber == lastTagNumber).DrawingNo += "\n" + itemTb.Rows[j][25].ToString(); } if (!string.IsNullOrWhiteSpace(itemTb.Rows[j][33].ToString())) { list.FirstOrDefault(x => x.TagNumber == lastTagNumber).Materials += "\n" + itemTb.Rows[j][33].ToString(); } if (!string.IsNullOrWhiteSpace(itemTb.Rows[j][52].ToString())) { list.FirstOrDefault(x => x.TagNumber == lastTagNumber).Remark += "\n" + itemTb.Rows[j][51].ToString(); } } } } } } if (list.Count > 0) { //获取已经存在的数据 var pipingCodes = list.ConvertAll(x => x.TagNumber); List addList = new List(); var existTechnologys = Funs.DB.PreRun_TechnologySysPiping.Where(x => pipingCodes.Contains(x.TagNumber) && x.SystemId == tvControlItem.SelectedNodeID && x.ProjectId == this.CurrUser.LoginProjectId).ToList(); if (existTechnologys.Count == 0) { addList = list; } else { var existTags = existTechnologys.ConvertAll(x => x.TagNumber); foreach (var item in list) { if (existTags.Count(a => a == item.TagNumber) > 0) { var upModel = existTechnologys.FirstOrDefault(a => a.TagNumber == item.TagNumber); upModel.NameSpecifications = item.NameSpecifications; upModel.DrawingNo = item.DrawingNo; upModel.Materials = item.Materials; upModel.NumOperate = item.NumOperate; upModel.NumStandby = item.NumStandby; upModel.WeightSingle = item.WeightSingle; upModel.WeightTotal = item.WeightTotal; upModel.Remark = item.Remark; Funs.DB.SubmitChanges(); } else { addList.Add(item); } } } if (addList.Count > 0) { Funs.DB.PreRun_TechnologySysPiping.InsertAllOnSubmit(addList); Funs.DB.SubmitChanges(); } } else { filegyData.Reset(); ShowNotify("Excel模板无数据!", MessageBoxIcon.Warning); return; } filegyData.Reset(); ZxtgyBrid(); ShowNotify("导入成功!", MessageBoxIcon.Success); } catch (Exception ex) { filegyData.Reset(); ShowNotify(ex.Message, MessageBoxIcon.Warning); } } /// /// 工艺设备保存 /// protected void btnZxtgySave_Click(object sender, EventArgs e) { try { JArray mergedData = GridZxtgy.GetMergedData(); foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); var technologyId = this.GridZxtgy.Rows[i].DataKeys[0].ToString(); PreRun_TechnologySysPiping model = Funs.DB.PreRun_TechnologySysPiping.FirstOrDefault(x => x.TechnologyId == technologyId); if (model == null) continue; model.TagNumber = values.Value("TagNumber"); model.NameSpecifications = values.Value("NameSpecifications"); model.DrawingNo = values.Value("DrawingNo"); model.Materials = values.Value("Materials"); model.NumOperate = values.Value("NumOperate"); model.NumStandby = values.Value("NumStandby"); model.WeightSingle = values.Value("WeightSingle"); model.WeightTotal = values.Value("WeightTotal"); model.Remark = values.Value("Remark"); Funs.DB.SubmitChanges(); } ZxtgyBrid(); ShowNotify("修改成功!"); } catch (Exception ex) { ShowNotify(ex.Message, MessageBoxIcon.Error); } } /// /// 工艺设备模板下载 /// protected void btnGysbDownLoad_Click(object sender, EventArgs e) { PageContext.RegisterStartupScript(Confirm.GetShowReference("是否确认下载模板?", String.Empty, MessageBoxIcon.Question, PageManager1.GetCustomEventReference(false, "Confirmgy_OK"), PageManager1.GetCustomEventReference("Confirm_Cancel"))); } #endregion #region 仪表索引导入 /// /// 绑定仪表索引 /// public void ZxtybBrid() { string strSql = @"select * from PreRun_InstrumentSysPiping where ProjectId=@ProjectId and SystemId=@SystemId "; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); listStr.Add(new SqlParameter("@SystemId", this.tvControlItem.SelectedNodeID)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); GridZxtyb.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(GridZxtyb, tb); GridZxtyb.DataSource = table; GridZxtyb.DataBind(); TabStrip1.ActiveTabIndex = 2; } /// /// 分页 /// protected void GridZxtyb_PageIndexChange(object sender, GridPageEventArgs e) { GridZxtyb.PageIndex = e.NewPageIndex; ZxtybBrid(); } /// /// 排序 /// protected void GridZxtyb_Sort(object sender, GridSortEventArgs e) { GridZxtyb.SortDirection = e.SortDirection; GridZxtyb.SortField = e.SortField; ZxtybBrid(); } /// /// 行点击事件 /// protected void GridZxtyb_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { string rowID = e.RowID; var model = Funs.DB.PreRun_InstrumentSysPiping.FirstOrDefault(p => p.InstrumentId == rowID); Funs.DB.PreRun_InstrumentSysPiping.DeleteOnSubmit(model); Funs.DB.SubmitChanges(); ZxtybBrid(); ShowNotify("删除成功!"); } } /// /// 分页下拉框事件 /// protected void ddlZxtybPageSize_SelectedIndexChanged(object sender, EventArgs e) { GridZxtyb.PageSize = Convert.ToInt32(ddlZxtybPageSize.SelectedValue); ZxtybBrid(); } /// /// 仪表索引导入 /// protected void btnZxtybImport_Click(object sender, EventArgs e) { try { if (this.fileybData.HasFile == false) { ShowNotify("请选择excel文件!", MessageBoxIcon.Warning); return; } string IsXls = Path.GetExtension(this.fileybData.FileName).ToString().Trim().ToLower(); if (IsXls != ".xls" && IsXls != ".xlsx") { fileybData.Reset(); ShowNotify("excel文件类型错误!", MessageBoxIcon.Warning); return; } string rootPath = Server.MapPath("~/"); string initFullPath = rootPath + Const.ExcelUrl; if (!Directory.Exists(initFullPath)) { Directory.CreateDirectory(initFullPath); } //指定上传文件名称 string fileUrl = BLL.Funs.GetNewFileName() + IsXls; //上传文件路径 string filePath = initFullPath + fileUrl; //文件上传服务器 this.fileybData.PostedFile.SaveAs(filePath); //文件上传服务器后的名称 string fileName = rootPath + Const.ExcelUrl + fileUrl; //读取Excel DataSet ds = NPOIHelper.ExcelToDataSet(fileName, out string message, false, false); if (ds == null) { fileybData.Reset(); ShowNotify("模板错误,请从系统下载正确的模板!", MessageBoxIcon.Warning); return; } if (!string.IsNullOrWhiteSpace(message)) { ShowNotify(message, MessageBoxIcon.Warning); return; } //移除不正确的表格 List removeAtt = new List(); for (int i = 0; i < ds.Tables.Count; i++) { var itemTb = ds.Tables[i]; var fileVerify = InstrumentVerifyFile(itemTb); if (!fileVerify) removeAtt.Add(ds.Tables[i].TableName); } if (removeAtt.Count > 0) { foreach (var itemR in removeAtt) { ds.Tables.Remove(itemR); } } if (ds.Tables.Count == 0) { fileybData.Reset(); ShowNotify("Excel模板格式不正确!", MessageBoxIcon.Warning); return; } List list = new List(); for (int i = 0; i < ds.Tables.Count; i++) { var itemTb = ds.Tables[i]; if (itemTb.Rows.Count > 5) { for (int j = 5; j < itemTb.Rows.Count; j++) { if (string.IsNullOrWhiteSpace(itemTb.Rows[j][1].ToString())) continue; if (string.IsNullOrWhiteSpace(itemTb.Rows[j][28].ToString())) continue; if (itemTb.Rows[j][28].ToString().Trim() != "现场") continue; var model = new PreRun_InstrumentSysPiping(); model.InstrumentId = Guid.NewGuid().ToString(); model.SystemId = tvControlItem.SelectedNodeID; model.ProjectId = this.CurrUser.LoginProjectId; model.InstrumentTag = itemTb.Rows[j][1].ToString(); model.UseTo = itemTb.Rows[j][7].ToString(); model.InstrumentName = itemTb.Rows[j][18].ToString(); model.Supplier = itemTb.Rows[j][25].ToString(); model.InstallationPosition = itemTb.Rows[j][28].ToString(); model.SignalType = itemTb.Rows[j][32].ToString(); model.AssociatedSystem = itemTb.Rows[j][36].ToString(); model.Cp25 = itemTb.Rows[j][40].ToString(); model.In11 = itemTb.Rows[j][44].ToString(); model.In40 = itemTb.Rows[j][48].ToString(); model.Remark = itemTb.Rows[j][52].ToString(); model.AddUser = this.CurrUser.UserId; model.AddTime = DateTime.Now; model.Sort = list.Count; list.Add(model); } } } if (list.Count > 0) { //获取已经存在的数据 var tags = list.ConvertAll(x => x.InstrumentTag); List addList = new List(); var existInstrumens = Funs.DB.PreRun_InstrumentSysPiping.Where(x => tags.Contains(x.InstrumentTag) && x.SystemId == tvControlItem.SelectedNodeID && x.ProjectId == this.CurrUser.LoginProjectId).ToList(); if (existInstrumens.Count == 0) { addList = list; } else { var existTags = existInstrumens.ConvertAll(x => x.InstrumentTag); foreach (var item in list) { if (existTags.Count(a => a == item.InstrumentTag) > 0) { var upModel = existInstrumens.FirstOrDefault(a => a.InstrumentTag == item.InstrumentTag); upModel.UseTo = item.UseTo; upModel.InstrumentName = item.InstrumentName; upModel.Supplier = item.Supplier; upModel.InstallationPosition = item.InstallationPosition; upModel.SignalType = item.SignalType; upModel.AssociatedSystem = item.AssociatedSystem; upModel.Cp25 = item.Cp25; upModel.In11 = item.In11; upModel.In40 = item.In40; upModel.Remark = item.Remark; Funs.DB.SubmitChanges(); } else { addList.Add(item); } } } if (addList.Count > 0) { Funs.DB.PreRun_InstrumentSysPiping.InsertAllOnSubmit(addList); Funs.DB.SubmitChanges(); } } else { fileybData.Reset(); ShowNotify("Excel模板无安装位置为“现场”的数据!", MessageBoxIcon.Warning); return; } fileybData.Reset(); ZxtybBrid(); ShowNotify("导入成功!", MessageBoxIcon.Success); } catch (Exception ex) { fileybData.Reset(); ShowNotify(ex.Message, MessageBoxIcon.Warning); } } /// /// 仪表索引保存 /// protected void btnZxtybSave_Click(object sender, EventArgs e) { try { JArray mergedData = GridZxtyb.GetMergedData(); foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); var instrumentId = this.GridZxtyb.Rows[i].DataKeys[0].ToString(); PreRun_InstrumentSysPiping model = Funs.DB.PreRun_InstrumentSysPiping.FirstOrDefault(x => x.InstrumentId == instrumentId); if (model == null) continue; model.InstrumentTag = values.Value("InstrumentTag"); model.UseTo = values.Value("UseTo"); model.InstrumentName = values.Value("InstrumentName"); model.Supplier = values.Value("Supplier"); model.InstallationPosition = values.Value("InstallationPosition"); model.SignalType = values.Value("SignalType"); model.AssociatedSystem = values.Value("AssociatedSystem"); model.Cp25 = values.Value("Cp25"); model.In11 = values.Value("In11"); model.In40 = values.Value("In40"); model.Remark = values.Value("Remark"); Funs.DB.SubmitChanges(); } ZxtybBrid(); ShowNotify("修改成功!"); } catch (Exception ex) { ShowNotify(ex.Message, MessageBoxIcon.Error); } } /// /// 仪表索引下载模板 /// protected void btnYbsyDownLoad_Click(object sender, EventArgs e) { PageContext.RegisterStartupScript(Confirm.GetShowReference("是否确认下载模板?", String.Empty, MessageBoxIcon.Question, PageManager1.GetCustomEventReference(false, "Confirmyb_OK"), PageManager1.GetCustomEventReference("Confirm_Cancel"))); } #endregion #region SS子系统管道一览表选择 /// /// 绑定 /// public void SubPropertyBrid(List selectPropertys = null) { var datatb = new DataTable(); var addTb = new DataTable(); string strSql = @"select a.PropertyId,a.SystemId,a.ProjectId,a.PipingCode,a.Diameter,a.MaterialLevel,a.AdiabatType,a.AdiabatThickness,a.MediumState,a.DrawingNo,a.PipingStart,a.PipingEnd,a.PipingLevel,a.NormalTemperature,a.NormalPressure,a.DesignTemperature,a.DesignPressure,a.PaintLevel,a.Remark,a.AddUser,a.AddTime,a.Sort from PreRun_PropertySysPiping as a inner join PreRun_SubPropertySelect as b on a.PropertyId=b.PropertyId where 1=1 and a.ProjectId=@ProjectId and b.SubSystemId=@SubSystemId order by a.Sort asc "; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); listStr.Add(new SqlParameter("@SubSystemId", this.tvControlItem.SelectedNodeID)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); if (selectPropertys != null && selectPropertys.Count > 0) { var existPropertyIds = GetColumnValues(tb, "PropertyId"); if (existPropertyIds.Count > 0) selectPropertys.RemoveAll(a => existPropertyIds.Contains(a)); if (selectPropertys.Count > 0) { var addtbRowSql = $"select a.PropertyId,a.SystemId,a.ProjectId,a.PipingCode,a.Diameter,a.MaterialLevel,a.AdiabatType,a.AdiabatThickness,a.MediumState,a.DrawingNo,a.PipingStart,a.PipingEnd,a.PipingLevel,a.NormalTemperature,a.NormalPressure,a.DesignTemperature,a.DesignPressure,a.PaintLevel,a.Remark,a.AddUser,a.AddTime,a.Sort from PreRun_PropertySysPiping as a where 1=1 and a.PropertyId in ('{string.Join("','", selectPropertys)}') order by a.Sort asc "; addTb = SQLHelper.GetDataTableRunText(addtbRowSql); } } if (addTb.Rows.Count > 0) datatb.Load(addTb.CreateDataReader()); if (tb.Rows.Count > 0) datatb.Load(tb.CreateDataReader()); if (datatb.Rows.Count > 0) { var pids = GetColumnValues(datatb, "PropertyId"); if (pids.Count > 0) hidSelectProperty.Text = string.Join(",", pids); } else { hidSelectProperty.Text = string.Empty; } gvSsxtgdxz.DataSource = datatb; gvSsxtgdxz.DataBind(); TabStrip2.ActiveTabIndex = 0; } /// /// 排序 /// protected void gvSsxtgdxz_Sort(object sender, GridSortEventArgs e) { gvSsxtgdxz.SortDirection = e.SortDirection; gvSsxtgdxz.SortField = e.SortField; SubPropertyBrid(); } /// /// 行按钮事件 /// protected void gvSsxtgdxz_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { var ids = new List(); string rowID = e.RowID; var model = Funs.DB.PreRun_SubPropertySelect.FirstOrDefault(p => p.SubPropertyId == rowID); if (model != null) { Funs.DB.PreRun_SubPropertySelect.DeleteOnSubmit(model); Funs.DB.SubmitChanges(); } if (!string.IsNullOrWhiteSpace(hidSelectTechnology.Text)) { ids = hidSelectProperty.Text.Split(',').ToList(); ids.RemoveAll(a => a == rowID); } SubPropertyBrid(ids); ShowNotify("删除成功!"); } } /// /// 选择 /// protected void btnSelect_Click(object sender, EventArgs e) { string window = $"SelectProperty.aspx?SubSystemId={this.tvControlItem.SelectedNodeID}&SystemId={hidSystemId.Text}&SelectPropertyIds={hidSelectProperty.Text}"; PageContext.RegisterStartupScript(Window1.GetSaveStateReference(this.hidSelectProperty.ClientID) + Window1.GetShowReference(window)); } /// /// 关闭 /// protected void Window1_Close(object sender, WindowCloseEventArgs e) { var list = hidSelectProperty.Text.Split(',').ToList(); SubPropertyBrid(list); } /// /// 保存 /// protected void btnSelectSave_Click(object sender, EventArgs e) { try { JArray mergedData = gvSsxtgdxz.GetMergedData(); List list = new List(); foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); var deleteSubs = Funs.DB.PreRun_SubPropertySelect.Where(x => x.SubSystemId == this.tvControlItem.SelectedNodeID); Funs.DB.PreRun_SubPropertySelect.DeleteAllOnSubmit(deleteSubs); var model = new PreRun_SubPropertySelect(); model.SubPropertyId = Guid.NewGuid().ToString(); model.ProjectId = this.CurrUser.LoginProjectId; model.SubSystemId = this.tvControlItem.SelectedNodeID; model.PropertyId = gvSsxtgdxz.DataKeys[i][0].ToString(); model.AddUser = this.CurrUser.UserId; model.AddTime = DateTime.Now; model.Sort = i; list.Add(model); } if (list.Count > 0) { Funs.DB.PreRun_SubPropertySelect.InsertAllOnSubmit(list); Funs.DB.SubmitChanges(); } SubPropertyBrid(); ShowNotify("保存成功!"); } catch (Exception ex) { ShowNotify(ex.Message, MessageBoxIcon.Error); } } #endregion #region SS系统工艺设备一览表选择 /// /// 绑定数据 /// public void SubTechnologyBrid(List selectTechnologys = null) { var datatb = new DataTable(); var addTb = new DataTable(); string strSql = @"select a.TechnologyId,a.SystemId,a.ProjectId,a.TagNumber,a.NameSpecifications,a.DrawingNo,a.Materials,a.NumOperate,a.NumStandby,a.WeightSingle,a.WeightTotal,a.Remark,a.AddUser,a.AddTime,a.Sort from PreRun_TechnologySysPiping as a inner join PreRun_SubTechnologySelect as b on a.TechnologyId=b.TechnologyId where 1=1 and a.ProjectId=@ProjectId and b.SubSystemId=@SubSystemId order by a.Sort asc"; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); listStr.Add(new SqlParameter("@SubSystemId", this.tvControlItem.SelectedNodeID)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); if (selectTechnologys != null && selectTechnologys.Count > 0) { var existTechnologyIds = GetColumnValues(tb, "TechnologyId"); if (existTechnologyIds.Count > 0) selectTechnologys.RemoveAll(a => existTechnologyIds.Contains(a)); if (selectTechnologys.Count > 0) { var addtbRowSql = $"select a.TechnologyId,a.SystemId,a.ProjectId,a.TagNumber,a.NameSpecifications,a.DrawingNo,a.Materials,a.NumOperate,a.NumStandby,a.WeightSingle,a.WeightTotal,a.Remark,a.AddUser,a.AddTime,a.Sort from PreRun_TechnologySysPiping as a where 1=1 and a.TechnologyId in ('{string.Join("','", selectTechnologys)}') order by a.Sort asc"; addTb = SQLHelper.GetDataTableRunText(addtbRowSql); } } if (addTb.Rows.Count > 0) datatb.Load(addTb.CreateDataReader()); if (tb.Rows.Count > 0) datatb.Load(tb.CreateDataReader()); if (datatb.Rows.Count > 0) { var tids = GetColumnValues(datatb, "TechnologyId"); if (tids.Count > 0) hidSelectTechnology.Text = string.Join(",", tids); } else { hidSelectTechnology.Text = string.Empty; } gvSsxtgyxz.DataSource = datatb; gvSsxtgyxz.DataBind(); TabStrip2.ActiveTabIndex = 1; } /// /// 行事件 /// protected void gvSsxtgyxz_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { var ids = new List(); string rowID = e.RowID; var model = Funs.DB.PreRun_SubTechnologySelect.FirstOrDefault(p => p.TechnologyId == rowID); if (model != null) { Funs.DB.PreRun_SubTechnologySelect.DeleteOnSubmit(model); Funs.DB.SubmitChanges(); } if (!string.IsNullOrWhiteSpace(hidSelectTechnology.Text)) { ids = hidSelectTechnology.Text.Split(',').ToList(); ids.RemoveAll(a => a == rowID); } SubTechnologyBrid(ids); ShowNotify("删除成功!"); } } /// /// 关闭 /// protected void Window2_Close(object sender, WindowCloseEventArgs e) { //var list = hidSystemId.Text.Split(',').ToList(); var list = hidSelectTechnology.Text.Split(',').ToList(); SubTechnologyBrid(list); } /// /// 选择 /// protected void btngySelect_Click(object sender, EventArgs e) { string window = $"SelectTechnology.aspx?SubSystemId={this.tvControlItem.SelectedNodeID}&SystemId={hidSystemId.Text}&SelectTechnologyIds={hidSelectTechnology.Text}"; PageContext.RegisterStartupScript(Window2.GetSaveStateReference(this.hidSelectTechnology.ClientID) + Window2.GetShowReference(window)); } /// /// 保存 /// protected void btngySelectSave_Click(object sender, EventArgs e) { try { JArray mergedData = gvSsxtgyxz.GetMergedData(); List list = new List(); foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); var deleteSubs = Funs.DB.PreRun_SubTechnologySelect.Where(x => x.SubSystemId == this.tvControlItem.SelectedNodeID); Funs.DB.PreRun_SubTechnologySelect.DeleteAllOnSubmit(deleteSubs); var model = new PreRun_SubTechnologySelect(); model.SubTechnologyId = Guid.NewGuid().ToString(); model.ProjectId = this.CurrUser.LoginProjectId; model.SubSystemId = this.tvControlItem.SelectedNodeID; model.TechnologyId = gvSsxtgyxz.DataKeys[i][0].ToString(); model.AddUser = this.CurrUser.UserId; model.AddTime = DateTime.Now; model.Sort = i; list.Add(model); } if (list.Count > 0) { Funs.DB.PreRun_SubTechnologySelect.InsertAllOnSubmit(list); Funs.DB.SubmitChanges(); } SubTechnologyBrid(); ShowNotify("保存成功!"); } catch (Exception ex) { ShowNotify(ex.Message, MessageBoxIcon.Error); } } #endregion #region SS系统仪表索引选择 /// /// 绑定数据 /// public void SubInstrumentBrid(List selectInstrumentIds = null) { var datatb = new DataTable(); var addTb = new DataTable(); string strSql = @"select a.InstrumentId,a.SystemId,a.ProjectId,a.InstrumentTag,a.UseTo,a.InstrumentName,a.Supplier,a.InstallationPosition,a.SignalType,a.AssociatedSystem,a.Cp25,a.In11,a.In40,a.Remark,a.AddUser,a.AddTime,a.Sort from PreRun_InstrumentSysPiping as a inner join PreRun_SubInstrumentSelect as b on a.InstrumentId=b.InstrumentId where 1=1 and a.ProjectId=@ProjectId and b.SubSystemId=@SubSystemId order by a.Sort asc "; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); listStr.Add(new SqlParameter("@SubSystemId", this.tvControlItem.SelectedNodeID)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); if (selectInstrumentIds != null && selectInstrumentIds.Count > 0) { var existInstrumentIdIds = GetColumnValues(tb, "InstrumentId"); if (existInstrumentIdIds.Count > 0) selectInstrumentIds.RemoveAll(a => existInstrumentIdIds.Contains(a)); if (selectInstrumentIds.Count > 0) { var addtbRowSql = $"select a.InstrumentId,a.SystemId,a.ProjectId,a.InstrumentTag,a.UseTo,a.InstrumentName,a.Supplier,a.InstallationPosition,a.SignalType,a.AssociatedSystem,a.Cp25,a.In11,a.In40,a.Remark,a.AddUser,a.AddTime,a.Sort from PreRun_InstrumentSysPiping as a where 1=1 and a.InstrumentId in ('{string.Join("','", selectInstrumentIds)}') order by a.Sort asc"; addTb = SQLHelper.GetDataTableRunText(addtbRowSql); } } if (addTb.Rows.Count > 0) datatb.Load(addTb.CreateDataReader()); if (tb.Rows.Count > 0) datatb.Load(tb.CreateDataReader()); if (datatb.Rows.Count > 0) { var tids = GetColumnValues(datatb, "InstrumentId"); if (tids.Count > 0) hidSelectInstrument.Text = string.Join(",", tids); } else { hidSelectInstrument.Text = string.Empty; } gvSsxtybxz.DataSource = datatb; gvSsxtybxz.DataBind(); TabStrip2.ActiveTabIndex = 2; } /// /// 行事件 /// protected void gvSsxtybxz_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { var ids = new List(); string rowID = e.RowID; var model = Funs.DB.PreRun_InstrumentSysPiping.FirstOrDefault(p => p.InstrumentId == rowID); if (model != null) { Funs.DB.PreRun_InstrumentSysPiping.DeleteOnSubmit(model); Funs.DB.SubmitChanges(); } if (!string.IsNullOrWhiteSpace(hidSelectInstrument.Text)) { ids = hidSelectInstrument.Text.Split(',').ToList(); ids.RemoveAll(a => a == rowID); } SubInstrumentBrid(ids); ShowNotify("删除成功!"); } } /// /// 选择 /// protected void btnybSelect_Click(object sender, EventArgs e) { string window = $"SelectInstrument.aspx?SubSystemId={this.tvControlItem.SelectedNodeID}&SystemId={hidSystemId.Text}&SelectInstrumentIds={hidSelectInstrument.Text}"; PageContext.RegisterStartupScript(Window3.GetSaveStateReference(this.hidSelectInstrument.ClientID) + Window3.GetShowReference(window)); } /// /// 保存 /// protected void btnybSelectSave_Click(object sender, EventArgs e) { try { JArray mergedData = gvSsxtybxz.GetMergedData(); List list = new List(); foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); var deleteSubs = Funs.DB.PreRun_SubInstrumentSelect.Where(x => x.SubSystemId == this.tvControlItem.SelectedNodeID); Funs.DB.PreRun_SubInstrumentSelect.DeleteAllOnSubmit(deleteSubs); var model = new PreRun_SubInstrumentSelect(); model.SubInstrumentId = Guid.NewGuid().ToString(); model.ProjectId = this.CurrUser.LoginProjectId; model.SubSystemId = this.tvControlItem.SelectedNodeID; model.InstrumentId = gvSsxtybxz.DataKeys[i][0].ToString(); model.AddUser = this.CurrUser.UserId; model.AddTime = DateTime.Now; model.Sort = i; list.Add(model); } if (list.Count > 0) { Funs.DB.PreRun_SubInstrumentSelect.InsertAllOnSubmit(list); Funs.DB.SubmitChanges(); } SubInstrumentBrid(); ShowNotify("保存成功!"); } catch (Exception ex) { ShowNotify(ex.Message, MessageBoxIcon.Error); } } /// /// 关闭 /// protected void Window3_Close(object sender, WindowCloseEventArgs e) { var list = hidSelectInstrument.Text.Split(',').ToList(); SubInstrumentBrid(list); } #endregion #region 私有方法 /// /// 验证管道模板是否正确 /// /// private bool PropertyVerifyFile(DataTable dt) { var result = true; if (dt.Rows[4][1].ToString() != "管道号") result = false; if (dt.Rows[4][8].ToString() != "公称") result = false; if (dt.Rows[4][10].ToString() != "管道材料等级") result = false; if (dt.Rows[4][15].ToString() != "绝热伴热") result = false; if (dt.Rows[4][20].ToString() != "介质") result = false; if (!dt.Rows[4][22].ToString().Contains("图号")) result = false; if (dt.Rows[4][29].ToString() != "管道起止点") result = false; if (dt.Rows[4][41].ToString() != "管道") result = false; if (dt.Rows[4][43].ToString() != "温度") result = false; if (dt.Rows[4][45].ToString() != "压力") result = false; if (dt.Rows[4][47].ToString() != "温度") result = false; if (dt.Rows[4][49].ToString() != "压力") result = false; return result; } /// /// 验证设备模板是否正确 /// /// private bool TechnologyVerifyFile(DataTable dt) { var result = true; if (dt.Rows[3][1].ToString() != "序号") result = false; if (dt.Rows[3][4].ToString() != "设备位号") result = false; if (dt.Rows[3][9].ToString() != "设备名称和规格") result = false; if (dt.Rows[3][25].ToString() != "图号或型号") result = false; if (dt.Rows[3][33].ToString() != "制造材料") result = false; if (dt.Rows[4][42].ToString() != "操作") result = false; if (dt.Rows[4][44].ToString() != "备用") result = false; if (dt.Rows[4][46].ToString() != "单重") result = false; if (dt.Rows[4][49].ToString() != "总重") result = false; if (dt.Rows[3][52].ToString() != "备注") result = false; return result; } /// /// 验证仪表索引模板是否正确 /// /// private bool InstrumentVerifyFile(DataTable dt) { var result = true; if (dt.Rows[3][1].ToString() != "仪表位号") result = false; if (dt.Rows[3][7].ToString() != "用途") result = false; if (dt.Rows[3][18].ToString() != "仪表名称") result = false; if (dt.Rows[3][25].ToString() != "供货方") result = false; if (dt.Rows[3][28].ToString() != "安装位置") result = false; if (dt.Rows[3][32].ToString() != "信号类型") result = false; if (dt.Rows[3][36].ToString() != "关联系统") result = false; if (dt.Rows[3][40].ToString() != "P&ID") result = false; if (dt.Rows[3][44].ToString() != "数据表") result = false; if (dt.Rows[3][48].ToString() != "仪表位置图") result = false; if (dt.Rows[3][52].ToString() != "备注") result = false; return result; } /// /// 验证datatable某列是否存在重复 /// /// public bool HasRepeatData(DataTable dt, string[] colName) { bool flag = false; DataView myDataView = new DataView(dt); if (myDataView.ToTable(true, colName).Rows.Count < dt.Rows.Count) { flag = true; } return flag; } /// /// 获取某一列的所有值 /// /// 列数据类型 /// 数据表 /// 列名 /// public static List GetColumnValues(DataTable dtSource, string filedName) { return (from r in dtSource.AsEnumerable() select r.Field(filedName)).ToList(); } /// /// 导入管道,工艺,仪表索引tab选择 /// protected void TabStrip1_TabIndexChanged(object sender, EventArgs e) { if (TabStrip1.ActiveTabIndex == 0) { //管道一览表 ZxtgdBrid(); } else if (TabStrip1.ActiveTabIndex == 1) { //工艺设备一览表 ZxtgyBrid(); } else if (TabStrip1.ActiveTabIndex == 2) { //仪表索引 ZxtybBrid(); } } /// /// 选择管道,工艺,仪表索引tab选择 /// protected void TabStrip2_TabIndexChanged(object sender, EventArgs e) { if (TabStrip2.ActiveTabIndex == 0) { //管道 SubPropertyBrid(); } else if (TabStrip2.ActiveTabIndex == 1) { //工艺设备 SubTechnologyBrid(); } else if (TabStrip2.ActiveTabIndex == 2) { //仪表索引 SubInstrumentBrid(); } } /// /// 下载导入模板 /// protected void PageManager1_CustomEvent(object sender, CustomEventArgs e) { if (e.EventArgument == "Confirmgd_OK" || e.EventArgument == "Confirmgy_OK" || e.EventArgument == "Confirmyb_OK") { string constUrl = string.Empty; if (e.EventArgument == "Confirmgd_OK") { constUrl = Const.PropertyUrl; } else if (e.EventArgument == "Confirmgy_OK") { constUrl = Const.TechnologyUrl; } else if (e.EventArgument == "Confirmyb_OK") { constUrl = Const.InstrumentUrl; } string rootPath = Server.MapPath("~/"); string uploadfilepath = rootPath + constUrl; string filePath = constUrl; string fileName = Path.GetFileName(filePath); FileInfo info = new FileInfo(uploadfilepath); long fileSize = info.Length; Response.ClearContent(); Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); Response.ContentType = "excel/plain"; Response.ContentEncoding = System.Text.Encoding.UTF8; Response.AddHeader("Content-Length", fileSize.ToString().Trim()); Response.TransmitFile(uploadfilepath, 0, fileSize); Response.End(); } } #endregion } }