613 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			613 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using BLL; | |||
|  | using Model; | |||
|  | 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.TestRunManage | |||
|  | { | |||
|  |     public partial class DeviceRun : PageBase | |||
|  |     { | |||
|  |         protected void Page_Load(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (!IsPostBack) | |||
|  |             { | |||
|  |                 DataBrid(); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         #region 数据绑定和事件 | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 数据绑定 | |||
|  |         /// </summary> | |||
|  |         public void DataBrid() | |||
|  |         { | |||
|  |             string strSql = @"select a.PreRunId,a.PreRunCode,a.PreRunName,b.ProjectId,b.ProjectName,a.PreRunLevel,
 | |||
|  |                                     (case a.PreRunLevel when 1 then '装置' when 2 then '工序' when 3 then 'S系统' else '' end) as RunLevelName, | |||
|  |                                     a.ParentId,a.Remark,a.OperateTime,a.Sort  | |||
|  |                                     from PreRun_SysDevice as a  | |||
|  |                                     inner join Base_Project as b on a.ProjectId=b.ProjectId where a.PreRunLevel!=4 and a.ProjectId=@ProjectId order by a.Sort,a.PreRunLevel asc";
 | |||
|  |             List<SqlParameter> listStr = new List<SqlParameter>(); | |||
|  |             listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); | |||
|  |             if (!string.IsNullOrEmpty(sRunName.Text.Trim())) | |||
|  |             { | |||
|  |                 strSql += " and a.PreRunName=@PreRunName"; | |||
|  |                 listStr.Add(new SqlParameter("@PreRunName", this.sRunName.Text.Trim())); | |||
|  |             } | |||
|  |             SqlParameter[] parameter = listStr.ToArray(); | |||
|  |             DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); | |||
|  |             Grid1.DataSource = tb; | |||
|  |             Grid1.DataBind(); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 行加载事件 | |||
|  |         /// </summary> | |||
|  |         protected void Grid1_RowDataBound(object sender, GridRowEventArgs e) | |||
|  |         { | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region 按钮 | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 搜索 | |||
|  |         /// </summary> | |||
|  |         protected void btnSearch_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             DataBrid(); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 新增 | |||
|  |         /// </summary> | |||
|  |         protected void btnAdd_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             PageContext.RegisterStartupScript(Window1.GetShowReference($"DeviceRunEdit.aspx?RunId=&ParentId=", "新增")); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 添加子级 | |||
|  |         /// </summary> | |||
|  |         protected void btnParentAdd_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (Grid1.SelectedRowIndexArray.Length == 0) | |||
|  |             { | |||
|  |                 ShowNotify("请选择一条数据!", MessageBoxIcon.Warning); | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             var rowIndex = Grid1.SelectedRowIndex; | |||
|  |             var rowId = Grid1.DataKeys[rowIndex][0].ToString(); | |||
|  |             var runLevel = Grid1.DataKeys[rowIndex][2] != null ? Convert.ToInt32(Grid1.DataKeys[rowIndex][2]) : 1; | |||
|  |             if (runLevel > 2) | |||
|  |             { | |||
|  |                 ShowNotify("最小节点无子节点!", MessageBoxIcon.Warning); | |||
|  |                 return; | |||
|  |             } | |||
|  |             PageContext.RegisterStartupScript(Window1.GetShowReference($"DeviceRunEdit.aspx?RunId=&ParentId={rowId}", "添加子级")); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 编辑 | |||
|  |         /// </summary> | |||
|  |         protected void btnEdit_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (Grid1.SelectedRowIndexArray.Length == 0) | |||
|  |             { | |||
|  |                 ShowNotify("请选择一条数据!", MessageBoxIcon.Warning); | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             var rowIndex = Grid1.SelectedRowIndex; | |||
|  |             var rowId = Grid1.DataKeys[rowIndex][0].ToString(); | |||
|  |             var parentId = Grid1.DataKeys[rowIndex][1] != null ? Grid1.DataKeys[rowIndex][1].ToString() : string.Empty; | |||
|  |             PageContext.RegisterStartupScript(Window1.GetShowReference($"DeviceRunEdit.aspx?RunId={rowId}&ParentId={parentId}", "编辑")); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 关闭 | |||
|  |         /// </summary> | |||
|  |         protected void Window1_Close(object sender, WindowCloseEventArgs e) | |||
|  |         { | |||
|  |             DataBrid(); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 导入 | |||
|  |         /// </summary> | |||
|  |         protected void btnImport_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") | |||
|  |                 { | |||
|  |                     this.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); | |||
|  |                 if (ds == null) | |||
|  |                 { | |||
|  |                     this.fileData.Reset(); | |||
|  |                     ShowNotify("模板错误,请从系统下载正确的模板!", MessageBoxIcon.Warning); | |||
|  |                     return; | |||
|  |                 } | |||
|  |                 if (!string.IsNullOrWhiteSpace(message)) | |||
|  |                 { | |||
|  |                     ShowNotify(message, MessageBoxIcon.Warning); | |||
|  |                     return; | |||
|  |                 } | |||
|  |                 if (ds.Tables[0].Rows.Count > 1) | |||
|  |                 { | |||
|  |                     var fileVerify = VerifyFile(ds); | |||
|  |                     if (!fileVerify) | |||
|  |                     { | |||
|  |                         this.fileData.Reset(); | |||
|  |                         ShowNotify("请获取正确模板!", MessageBoxIcon.Warning); | |||
|  |                         return; | |||
|  |                     } | |||
|  | 
 | |||
|  |                     int index = 1; | |||
|  |                     List<SysDeviceDto> list = new List<SysDeviceDto>(); | |||
|  |                     foreach (DataRow item in ds.Tables[0].Rows) | |||
|  |                     { | |||
|  |                         SysDeviceDto model = new SysDeviceDto(); | |||
|  |                         if (index == 1) | |||
|  |                         { | |||
|  |                             index++; | |||
|  |                             continue; | |||
|  |                         } | |||
|  |                         if (StrIsNumm(item[0]) || StrIsNumm(item[1])) | |||
|  |                         { | |||
|  |                             this.fileData.Reset(); | |||
|  |                             ShowNotify($"{index}行装置编码或名称为空!", MessageBoxIcon.Warning); | |||
|  |                             break; | |||
|  |                         } | |||
|  | 
 | |||
|  |                         //判断是否为装置 | |||
|  |                         if (!StrIsNumm(item[0]) && !StrIsNumm(item[1]) && StrIsNumm(item[2]) && StrIsNumm(item[3]) && StrIsNumm(item[4]) && StrIsNumm(item[5])) | |||
|  |                         { | |||
|  |                             model.InstallationCode = item[0].ToString(); | |||
|  |                             model.InstallationName = item[1].ToString(); | |||
|  |                             model.Level = 1; | |||
|  |                         } | |||
|  |                         //判断是否为工序 | |||
|  |                         else if (!StrIsNumm(item[0]) && !StrIsNumm(item[1]) && !StrIsNumm(item[2]) && !StrIsNumm(item[3]) && StrIsNumm(item[4]) && StrIsNumm(item[5])) | |||
|  |                         { | |||
|  |                             model.InstallationCode = item[0].ToString(); | |||
|  |                             model.InstallationName = item[1].ToString(); | |||
|  |                             model.ProcessesCode = item[2].ToString(); | |||
|  |                             model.ProcessesName = item[3].ToString(); | |||
|  |                             model.Level = 2; | |||
|  |                         } | |||
|  |                         //判断是否为系统 | |||
|  |                         else if (!StrIsNumm(item[0]) && !StrIsNumm(item[1]) && !StrIsNumm(item[2]) && !StrIsNumm(item[3]) && !StrIsNumm(item[4]) && !StrIsNumm(item[5])) | |||
|  |                         { | |||
|  |                             model.InstallationCode = item[0].ToString(); | |||
|  |                             model.InstallationName = item[1].ToString(); | |||
|  |                             model.ProcessesCode = item[2].ToString(); | |||
|  |                             model.ProcessesName = item[3].ToString(); | |||
|  |                             model.SystemCode = item[4].ToString(); | |||
|  |                             model.SystemName = item[5].ToString(); | |||
|  |                             model.Level = 3; | |||
|  |                         } | |||
|  |                         else | |||
|  |                         { | |||
|  |                             this.fileData.Reset(); | |||
|  |                             ShowNotify($"{index}行数据存在错误,数据格式具体见模板说明为空!", MessageBoxIcon.Warning); | |||
|  |                             break; | |||
|  |                         } | |||
|  |                         list.Add(model); | |||
|  |                         index++; | |||
|  |                     } | |||
|  | 
 | |||
|  |                     #region 数据验证 | |||
|  | 
 | |||
|  |                     //验证装置编码 | |||
|  |                     if (list.Count(x => x.Level == 1) > 0) | |||
|  |                     { | |||
|  |                         var installationCodes = list.Where(x => x.Level == 1).Select(a => a.InstallationCode); | |||
|  |                         var importCodes = installationCodes.GroupBy(x => x).Where(x => x.Count() > 1).Select(x => x.Key).ToList(); | |||
|  |                         if (importCodes.Count > 0) | |||
|  |                         { | |||
|  |                             this.fileData.Reset(); | |||
|  |                             ShowNotify($"EXCEL中装置编码{string.Join(",", importCodes)}重复,请调整模板数据!", MessageBoxIcon.Warning); | |||
|  |                             return; | |||
|  |                         } | |||
|  |                         installationCodes = installationCodes.Distinct(); | |||
|  |                         if (installationCodes.Count() > 0) | |||
|  |                         { | |||
|  |                             var existInstallations = Funs.DB.PreRun_SysDevice.Where(a => installationCodes.Contains(a.PreRunCode) && a.PreRunLevel == 1 && a.ProjectId == this.CurrUser.LoginProjectId).ToList(); | |||
|  |                             if (existInstallations.Count > 0) | |||
|  |                             { | |||
|  |                                 this.fileData.Reset(); | |||
|  |                                 ShowNotify($"装置编码({string.Join(",", existInstallations.ConvertAll(s => s.PreRunCode))})已存在!", MessageBoxIcon.Warning); | |||
|  |                                 return; | |||
|  |                             } | |||
|  |                         } | |||
|  | 
 | |||
|  |                     } | |||
|  |                     //验证工序编码 | |||
|  |                     if (list.Count(x => x.Level == 2) > 0) | |||
|  |                     { | |||
|  |                         var processesCodes = list.Where(x => x.Level == 2).Select(a => a.ProcessesCode); | |||
|  |                         var importCodes = processesCodes.GroupBy(x => x).Where(x => x.Count() > 1).Select(x => x.Key).ToList(); | |||
|  |                         if (importCodes.Count > 0) | |||
|  |                         { | |||
|  |                             this.fileData.Reset(); | |||
|  |                             ShowNotify($"EXCEL中工序编码{string.Join(",", importCodes)}重复,请调整模板数据!", MessageBoxIcon.Warning); | |||
|  |                             return; | |||
|  |                         } | |||
|  |                         processesCodes = processesCodes.Distinct(); | |||
|  |                         if (processesCodes.Count() > 0) | |||
|  |                         { | |||
|  |                             var existProcessess = Funs.DB.PreRun_SysDevice.Where(a => processesCodes.Contains(a.PreRunCode) && a.PreRunLevel == 2 && a.ProjectId == this.CurrUser.LoginProjectId).ToList(); | |||
|  |                             if (existProcessess.Count > 0) | |||
|  |                             { | |||
|  |                                 this.fileData.Reset(); | |||
|  |                                 ShowNotify($"工序编码({string.Join(",", existProcessess.ConvertAll(s => s.PreRunCode))})已存在!", MessageBoxIcon.Warning); | |||
|  |                                 return; | |||
|  |                             } | |||
|  |                         } | |||
|  |                     } | |||
|  |                     //验证系统编码 | |||
|  |                     if (list.Count(x => x.Level == 3) > 0) | |||
|  |                     { | |||
|  |                         var systemCodes = list.Where(x => x.Level == 3).Select(a => a.SystemCode); | |||
|  |                         var importCodes = systemCodes.GroupBy(x => x).Where(x => x.Count() > 1).Select(x => x.Key).ToList(); | |||
|  |                         if (importCodes.Count > 0) | |||
|  |                         { | |||
|  |                             this.fileData.Reset(); | |||
|  |                             ShowNotify($"EXCEL中系统编码{string.Join(",", importCodes)}重复,请调整模板数据!", MessageBoxIcon.Warning); | |||
|  |                             return; | |||
|  |                         } | |||
|  |                         systemCodes = systemCodes.Distinct().ToList(); | |||
|  |                         if (systemCodes.Count() > 0) | |||
|  |                         { | |||
|  |                             var existSystems = Funs.DB.PreRun_SysDevice.Where(a => systemCodes.Contains(a.PreRunCode) && a.PreRunLevel == 3 && a.ProjectId == this.CurrUser.LoginProjectId).ToList(); | |||
|  |                             if (existSystems.Count > 0) | |||
|  |                             { | |||
|  |                                 this.fileData.Reset(); | |||
|  |                                 ShowNotify($"系统编码({string.Join(",", existSystems.ConvertAll(s => s.PreRunCode))})已存在!", MessageBoxIcon.Warning); | |||
|  |                                 return; | |||
|  |                             } | |||
|  |                         } | |||
|  |                     } | |||
|  | 
 | |||
|  |                     #endregion | |||
|  | 
 | |||
|  |                     #region 数据处理 | |||
|  | 
 | |||
|  |                     var installationData = new List<PreRun_SysDevice>(); | |||
|  |                     var processesData = new List<PreRun_SysDevice>(); | |||
|  |                     var systemData = new List<PreRun_SysDevice>(); | |||
|  | 
 | |||
|  |                     //处理装置 | |||
|  |                     if (list.Count(x => x.Level == 1) > 0) | |||
|  |                     { | |||
|  |                         list.Where(x => x.Level == 1).ToList().ForEach(a => | |||
|  |                         { | |||
|  |                             a.InstallationId = Guid.NewGuid().ToString(); | |||
|  |                         }); | |||
|  |                     } | |||
|  |                     //处理工序 | |||
|  |                     if (list.Count(x => x.Level == 2) > 0) | |||
|  |                     { | |||
|  |                         var codes = list.ConvertAll(a => a.InstallationCode).Distinct(); | |||
|  |                         installationData = Funs.DB.PreRun_SysDevice.Where(x => x.PreRunLevel == 1 && codes.Contains(x.PreRunCode)).ToList(); | |||
|  |                         list.Where(x => x.Level == 2).ToList().ForEach(a => | |||
|  |                         { | |||
|  |                             //装置 | |||
|  |                             if (list.Count(p => p.InstallationCode == a.InstallationCode && p.Level == 1) > 0) | |||
|  |                             { | |||
|  |                                 a.InstallationId = list.FirstOrDefault(p => p.InstallationCode == a.InstallationCode && p.Level == 1).InstallationId; | |||
|  |                             } | |||
|  |                             else if (installationData.Count(p => p.PreRunCode == a.InstallationCode) > 0) | |||
|  |                             { | |||
|  |                                 a.InstallationId = installationData.FirstOrDefault(p => p.PreRunCode == a.InstallationCode).PreRunId; | |||
|  |                             } | |||
|  |                             //上级编码 | |||
|  |                             a.ParentId = a.InstallationId; | |||
|  |                             //工序 | |||
|  |                             a.ProcessesId = Guid.NewGuid().ToString(); | |||
|  |                         }); | |||
|  |                     } | |||
|  |                     //处理系统 | |||
|  |                     if (list.Count(x => x.Level == 3) > 0) | |||
|  |                     { | |||
|  |                         var codes = list.ConvertAll(a => a.ProcessesCode).Distinct(); | |||
|  |                         processesData = Funs.DB.PreRun_SysDevice.Where(x => x.PreRunLevel == 2 && codes.Contains(x.PreRunCode)).ToList(); | |||
|  |                         list.Where(x => x.Level == 3).ToList().ForEach(a => | |||
|  |                         { | |||
|  |                             //装置 | |||
|  |                             if (list.Count(p => p.InstallationCode == a.InstallationCode && p.Level == 1) > 0) | |||
|  |                             { | |||
|  |                                 a.InstallationId = list.FirstOrDefault(p => p.InstallationCode == a.InstallationCode && p.Level == 1).InstallationId; | |||
|  |                             } | |||
|  |                             else if (installationData.Count(p => p.PreRunCode == a.InstallationCode) > 0) | |||
|  |                             { | |||
|  |                                 a.InstallationId = installationData.FirstOrDefault(p => p.PreRunCode == a.InstallationCode).PreRunId; | |||
|  |                             } | |||
|  |                             //工序 | |||
|  |                             if (list.Count(p => p.ProcessesCode == a.ProcessesCode && p.Level == 2) > 0) | |||
|  |                             { | |||
|  |                                 a.ProcessesId = list.FirstOrDefault(p => p.ProcessesCode == a.ProcessesCode && p.Level == 2).ProcessesId; | |||
|  |                             } | |||
|  |                             else if (processesData.Count(p => p.PreRunCode == a.ProcessesCode) > 0) | |||
|  |                             { | |||
|  |                                 a.ProcessesId = processesData.FirstOrDefault(p => p.PreRunCode == a.ProcessesCode).PreRunId; | |||
|  |                             } | |||
|  |                             //上级编码 | |||
|  |                             a.ParentId = a.ProcessesId; | |||
|  |                             //系统 | |||
|  |                             a.SystemId = Guid.NewGuid().ToString(); | |||
|  |                         }); | |||
|  |                     } | |||
|  | 
 | |||
|  |                     #endregion | |||
|  | 
 | |||
|  |                     #region 数据入库 | |||
|  | 
 | |||
|  |                     var listData = new List<PreRun_SysDevice>(); | |||
|  |                     int oneIndex = 1; | |||
|  |                     int twoIndex = 1; | |||
|  |                     int threeIndex = 1; | |||
|  |                     foreach (var itemData in list) | |||
|  |                     { | |||
|  |                         var model = new PreRun_SysDevice(); | |||
|  |                         model.ProjectId = this.CurrUser.LoginProjectId; | |||
|  |                         model.PreRunLevel = itemData.Level; | |||
|  |                         if (itemData.Level == 1) | |||
|  |                         { | |||
|  |                             model.PreRunId = itemData.InstallationId; | |||
|  |                             model.PreRunCode = itemData.InstallationCode; | |||
|  |                             model.PreRunName = itemData.InstallationName; | |||
|  |                             model.ParentId = itemData.ParentId; | |||
|  |                             model.AddUser = CurrUser.Account; | |||
|  |                             model.OperateTime = DateTime.Now; | |||
|  |                             model.Sort = Funs.DB.PreRun_SysDevice.Count(p => p.ProjectId == CurrUser.LoginProjectId) + oneIndex; | |||
|  |                             oneIndex++; | |||
|  |                         } | |||
|  |                         if (itemData.Level == 2) | |||
|  |                         { | |||
|  |                             model.PreRunId = itemData.ProcessesId; | |||
|  |                             model.ProcessesId = itemData.ProcessesId; | |||
|  |                             model.PreRunCode = itemData.ProcessesCode; | |||
|  |                             model.PreRunName = itemData.ProcessesName; | |||
|  |                             model.InstallationId = itemData.InstallationId; | |||
|  |                             model.ParentId = itemData.ParentId; | |||
|  |                             model.AddUser = CurrUser.Account; | |||
|  |                             model.OperateTime = DateTime.Now; | |||
|  |                             model.Sort = Funs.DB.PreRun_SysDevice.Count(p => p.ProjectId == CurrUser.LoginProjectId) + twoIndex; | |||
|  |                             twoIndex++; | |||
|  |                         } | |||
|  |                         if (itemData.Level == 3) | |||
|  |                         { | |||
|  |                             model.PreRunId = itemData.SystemId; | |||
|  |                             model.SystemId = itemData.SystemId; | |||
|  |                             model.PreRunCode = itemData.SystemCode; | |||
|  |                             model.PreRunName = itemData.SystemName; | |||
|  |                             model.InstallationId = itemData.InstallationId; | |||
|  |                             model.ProcessesId = itemData.ProcessesId; | |||
|  |                             model.ParentId = itemData.ParentId; | |||
|  |                             model.AddUser = CurrUser.Account; | |||
|  |                             model.OperateTime = DateTime.Now; | |||
|  |                             model.Sort = Funs.DB.PreRun_SysDevice.Count(p => p.ProjectId == CurrUser.LoginProjectId) + threeIndex; | |||
|  |                             threeIndex++; | |||
|  |                         } | |||
|  |                         listData.Add(model); | |||
|  |                     } | |||
|  | 
 | |||
|  |                     Funs.DB.PreRun_SysDevice.InsertAllOnSubmit(listData); | |||
|  |                     Funs.DB.SubmitChanges(); | |||
|  |                     ShowNotify("导入成功!", MessageBoxIcon.Success); | |||
|  | 
 | |||
|  |                     #endregion | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     ShowNotify("文件无数据!", MessageBoxIcon.Warning); | |||
|  |                 } | |||
|  |                 DataBrid(); | |||
|  |                 this.fileData.Reset(); | |||
|  |             } | |||
|  |             catch (Exception ex) | |||
|  |             { | |||
|  |                 this.fileData.Reset(); | |||
|  |                 ShowNotify(ex.Message, MessageBoxIcon.Warning); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 下载模板 | |||
|  |         /// </summary> | |||
|  |         protected void btnDownLoad_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             PageContext.RegisterStartupScript(Confirm.GetShowReference("是否确认下载模板?", String.Empty, MessageBoxIcon.Question, PageManager1.GetCustomEventReference(false, "Confirm_OK"), PageManager1.GetCustomEventReference("Confirm_Cancel"))); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 下载导入模板 | |||
|  |         /// </summary> | |||
|  |         protected void PageManager1_CustomEvent(object sender, CustomEventArgs e) | |||
|  |         { | |||
|  |             if (e.EventArgument == "Confirm_OK") | |||
|  |             { | |||
|  |                 string rootPath = Server.MapPath("~/"); | |||
|  |                 string uploadfilepath = rootPath + Const.TestRunUrl; | |||
|  |                 string filePath = Const.TestRunUrl; | |||
|  |                 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(); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 右击修改 | |||
|  |         /// </summary> | |||
|  |         protected void btnMenuModify_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             btnEdit_Click(sender, e); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 右击新增子级别 | |||
|  |         /// </summary> | |||
|  |         protected void btnMenuParentAdd_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             btnParentAdd_Click(sender, e); | |||
|  |         } | |||
|  | 
 | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region 私有方法 | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 验证管道模板是否正确 | |||
|  |         /// </summary> | |||
|  |         /// <param name="ds"></param> | |||
|  |         /// <returns></returns> | |||
|  |         private bool VerifyFile(DataSet ds) | |||
|  |         { | |||
|  |             var result = true; | |||
|  |             if (ds.Tables[0].Rows[1][0].ToString().Contains("装置编码")) result = false; | |||
|  |             if (ds.Tables[0].Rows[1][1].ToString().Contains("装置名称")) result = false; | |||
|  |             if (ds.Tables[0].Rows[1][2].ToString().Contains("工序编码")) result = false; | |||
|  |             if (ds.Tables[0].Rows[1][3].ToString().Contains("工序名称")) result = false; | |||
|  |             if (ds.Tables[0].Rows[1][4].ToString().Contains("系统编码")) result = false; | |||
|  |             if (ds.Tables[0].Rows[1][5].ToString().Contains("系统名称")) result = false; | |||
|  |             return result; | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 验证datatable某列是否存在重复 | |||
|  |         /// </summary> | |||
|  |         /// <returns></returns> | |||
|  |         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; | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 获取某一列的所有值 | |||
|  |         /// </summary> | |||
|  |         /// <typeparam name="T">列数据类型</typeparam> | |||
|  |         /// <param name="dtSource">数据表</param> | |||
|  |         /// <param name="filedName">列名</param> | |||
|  |         /// <returns></returns> | |||
|  |         public static List<T> GetColumnValues<T>(DataTable dtSource, string filedName) | |||
|  |         { | |||
|  |             return (from r in dtSource.AsEnumerable() select r.Field<T>(filedName)).ToList<T>(); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 判断是否为空 | |||
|  |         /// </summary> | |||
|  |         /// <returns></returns> | |||
|  |         public bool StrIsNumm(object value) | |||
|  |         { | |||
|  |             bool result = false; | |||
|  |             if (value == null) result = true; | |||
|  |             if (string.IsNullOrWhiteSpace(value.ToString())) result = true; | |||
|  |             return result; | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 试车装置信息 | |||
|  |         /// </summary> | |||
|  |         public class SysDeviceDto | |||
|  |         { | |||
|  |             /// <summary> | |||
|  |             /// 上级主键 | |||
|  |             /// </summary> | |||
|  |             public string ParentId { get; set; } | |||
|  |             /// <summary> | |||
|  |             /// 主键编码 | |||
|  |             /// </summary> | |||
|  |             public string InstallationId { get; set; } | |||
|  |             /// <summary> | |||
|  |             /// 装置编码 | |||
|  |             /// </summary> | |||
|  |             public string InstallationCode { get; set; } | |||
|  |             /// <summary> | |||
|  |             /// 装置名称 | |||
|  |             /// </summary> | |||
|  |             public string InstallationName { get; set; } | |||
|  |             /// <summary> | |||
|  |             /// 工序主键 | |||
|  |             /// </summary> | |||
|  |             public string ProcessesId { get; set; } | |||
|  |             /// <summary> | |||
|  |             /// 工序编码 | |||
|  |             /// </summary> | |||
|  |             public string ProcessesCode { get; set; } | |||
|  |             /// <summary> | |||
|  |             /// 工序名称 | |||
|  |             /// </summary> | |||
|  |             public string ProcessesName { get; set; } | |||
|  |             /// <summary> | |||
|  |             /// 系统主键 | |||
|  |             /// </summary> | |||
|  |             public string SystemId { get; set; } | |||
|  |             /// <summary> | |||
|  |             /// 系统编码 | |||
|  |             /// </summary> | |||
|  |             public string SystemCode { get; set; } | |||
|  |             /// <summary> | |||
|  |             /// 系统名称 | |||
|  |             /// </summary> | |||
|  |             public string SystemName { get; set; } | |||
|  |             /// <summary> | |||
|  |             /// 级别1:装置 2:工序 3:系统 | |||
|  |             /// </summary> | |||
|  |             public int Level { get; set; } | |||
|  |         } | |||
|  | 
 | |||
|  |         #endregion | |||
|  | 
 | |||
|  |     } | |||
|  | } |